Как я могу изменить рамку строки состояния?
Я пытался использовать это, чтобы получить кадр строки состояния:
var statusBarWindow = UIApplication.sharedApplication().valueForKey("statusBarWindow")
однако, когда я пытаюсь изменить фрейм, он говорит, что значение является неизменным:
statusBarWindow?.frame = CGRect(x: -oldViewFrame, y: statusBarWindow.frame.origin.y, width: statusBarWindow.frame.size.width, height: statusBarWindow.frame.size.height)
1 ответ
Я дам вам ответ, основываясь на комментариях, которые вы написали о своем намерении ответить на этот вопрос.
Решение
Вы можете заставить строку состояния исчезать при открытии боковой панели (аналогично приложению Slack), переопределив метод prefersStatusBarHidden
от UIViewController
для боковой панели. Это должно быть что-то вроде следующего:
override func prefersStatusBarHidden() -> Bool {
return true
}
Вы также можете изменить внешний вид этого двумя способами: preferredStatusBarStyle
а также preferredStatusBarUpdateAnimation
пример
Я сделал простой проект, чтобы проиллюстрировать это. Можно реализовать боковую панель разными способами, поэтому вместо этого я основал этот пример на поповере. Ваша реализация будет зависеть от того, как вы внедрили боковую панель.
Я сделал простую раскадровку с двумя UIViewController
и UIButton
в каждом. При нажатии на первый UIButton
, тогда это вызовет переход с типом Present As Popover
это покажет второй контроллер.
Первый UIViewController
в нем нет кода (все делается в раскадровке), но второй UIViewController
имеет код для скрытия строки состояния.
Я прикрепил скриншот раскадровки и код для второго UIViewController
ниже.
//
// PopController.swift
// SidebarHideStatus
//
// Created by Stefan Veis Pennerup on 31/01/16.
// Copyright © 2016 Kumuluzz. All rights reserved.
//
import UIKit
class PopController: UIViewController {
// MARK: - Storyboard actions
@IBAction func backButtonPressed(sender: UIButton) {
dismissViewControllerAnimated(true, completion: nil)
}
// MARK: - Status bar
override func prefersStatusBarHidden() -> Bool {
return true
}
}