Вот решение для iOS8, Swift, Xcode 6.3.
Добавить цвет фона:
var statusBarBackground = UIView(frame: CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, 30))
statusBarBackground.backgroundColor = UIColor.blackColor()
statusBarBackground.tag = 13
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.window!.rootViewController!.view.addSubview(statusBarBackground)
appDelegate.window!.rootViewController!.view.bringSubviewToFront(navigationController!.navigationBar)
Удалить цвет фона:
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
for sv in appDelegate.window!.rootViewController!.view.subviews {
if sv.tag == 13 {
sv.removeFromSuperview()
}
}
Почему я не могу просто добавить statusBarBackground к мнению ViewController в? Потому что мне это нужно для представления UIDocumentInteractionController Preview, который, как он сейчас есть, не позволяет настраивать.
Почему я делаю statusBarBackground 30 high, что заставило меня сделать showSubviewToFront для navigationBar? Поскольку мой навигатор имеет закругленные углы (с масляными слоями, а не с изображениями), таким образом отображается вид за навигационной панелью (который я хочу быть того же цвета, что и фон в строке состояния.
Еще предстоит выяснить: если вы нажмете Предварительный просмотр навигационной панели перемещается вверх, но (конечно) statusVarBackground остается. Ни один делегат, который сказал бы мне, что прослушивание было прослушировано. Если у вас есть какие-либо идеи, оставьте его в комментариях.
вы не можете этого сделать. захотите сделать то же самое, тогда вам нужно добавить представление в тот же фрейм с (0,0, ширина, 20) с фоновым черным цветом и установить 'Просмотр состояния строки состояния на основе контроллера = NO' и' [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleLightContent]; ' –