У меня есть tabBarApp,

Вкладка 1 представляет собой NavigationController и включает строку состояния

2 - это простой viewCOntroller, где я добавил NavigationBar (он включает строку состояния)

На вкладке 3 нет строки состояния

Я изменил свой файл Plist с viewControllerBasedStatusBarAppearence на YES, потому что мне нужно, чтобы каждая вкладка по-разному обрабатывалась со строкой состояния (она должна быть на 1-й и 2-й вкладках, но 3-е должно быть спрятано )

Я написал это внутри первых двух контроллеров...

override funct preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent }

override func prefersStatusBarHidden() -> Bool {    return false  }

И я написал это внутри третьего контроллера

override func prefersStatusBarHidden() -> Bool {    return true  }

Но это не работает. у третьего контроллера нет строки состояния, как я ожидаю. 1-й контроллер имеет строку состояния того же цвета, что и моя навигационная панель, но 2-й контроллер не получает цвет навигационной панели (вероятно, потому что это не навигационный контроллер, а просто navBar)

Итак, как я могу настроить панель так, чтобы она имела цвет, который я хочу, не получая его от NavBarController? и как я могу настроить элементы в строке состояния (значки...), чтобы они имели белый цвет вместо черного? (текст на панели навигации белый)

0
Marco 30 Окт 2014 в 22:37
Когда я хотел изменить строку состояния, которую я поместил в appDelegate's applicationDidFinishLaunchingWithOptions [self.window setBackgroundColor: [UIColor whiteColor]];
 – 
LanternMike
31 Окт 2014 в 08:13

2 ответа

Если вы хотите изменить цвет содержимого в строке состояния (без использования автоматического материала UIViewController/UINavigation Controller) (так что ваш контроллер 2 представлений), вы можете использовать setStatusBarStyle(_ statusBarStyle: UIStatusBarStyle, анимированный анимированный: Bool) на UIApplication . Поэтому поместите следующее в viewWillAppear (или там, где это имеет смысл/работает лучше всего) в вашем контроллере с двумя представлениями:

UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightConte​nt, animated: false)

Документы: https: //developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplication_Class/#//apple_ref/occ/instm/UIApplication/setStatusBarStyle:animated:

0
taylorjcase 12 Мар 2015 в 00:38
setStatusBarStyle

В настоящее время устарело в iOS 9, и текущий способ изменения стиля строки состояния:

override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.Default
}

Изменение .Default на .LightContent для света

0
RJH 18 Сен 2015 в 22:50