2014-11-06 1 views
1

Я немного запутался о поведении в строке состояниячерного цвета для строки состояния в iOS8

мне не нужен прозрачный бар статуса мне нужно ее исправить и черный цвет. же как iOS6

Я пробовал много, , что я понимаю, его показывать черный цвет только тогда, когда я запускаю приложение в первый раз, когда я повернуть устройство на альбомную и снова сделать к портрету, то он принимает навигационная панель цвет.

Что я делаю неправильно.

Можно ли мне направить меня.

Это то, что я получаю

enter image description here

Это, как я хочу

enter image description here

+2

вы не можете этого сделать. захотите сделать то же самое, тогда вам нужно добавить представление в тот же фрейм с (0,0, ширина, 20) с фоновым черным цветом и установить 'Просмотр состояния строки состояния на основе контроллера = NO' и' [[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleLightContent]; ' –

ответ

0

Вот решение для 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 остается. Ни один делегат, который сказал бы мне, что прослушивание было прослушировано. Если у вас есть какие-либо идеи, оставьте его в комментариях.

1

Вы Cad сделать хак, чтобы установить статус бар цвет, приложение не были бы отвергнуты Apple, , но не гарантирует, что Apple не изменит это поведение в следующих версиях iOS.

- (void)setStatusBarColor:(UIColor *)color { 
id statusBarWindow = [[UIApplication sharedApplication] valueForKey:@"_statusBarWindow"]; 
NSString *statusBarWindowClassString = NSStringFromClass([statusBarWindow class]); 

if ([statusBarWindowClassString isEqualToString:@"UIStatusBarWindow"]) { 
    NSArray *statusBarWindowSubviews = [statusBarWindow subviews]; 

    for (UIView *statusBarWindowSubview in statusBarWindowSubviews) { 
     NSString *statusBarWindowSubviewClassString = NSStringFromClass([statusBarWindowSubview class]); 

     if ([statusBarWindowSubviewClassString isEqualToString:@"UIStatusBar"]) { 
      [statusBarWindowSubview setBackgroundColor:color]; 
     } 
    } 
} 
} 
+0

Спасибо это работает для меня Давайте посмотрим, о поведении яблока .... – Sagar

 Смежные вопросы

  • Нет связанных вопросов^_^