【问题标题】:iOS StatusBarStyle not changing when set to lightiOS StatusBarStyle 设置为亮时不会改变
【发布时间】:2018-03-17 06:03:45
【问题描述】:
我正在开发一个应用程序,我希望导航栏不可见并具有深色背景。我希望状态栏颜色为白色。我还希望最初隐藏状态栏。
我已将状态栏样式设置为浅色
但我得到的结果总是黑色文本状态栏,如下所示。
我尝试将“基于视图控制器的状态栏外观”设置为 NO,结果是隐藏状态栏。我还尝试让 prefersStatusBarHidden 返回 NO 但仍然相同。
我尝试将“查看基于控制器的状态栏外观”设置为“是”,结果是黑色文本。我试图让preferredStatusBarStyle 返回 UIStatusBarStyleLightContent 但还是一样。
我做错了什么。提前致谢。
【问题讨论】:
标签:
ios
objective-c
uistatusbar
【解决方案1】:
AppDelegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
【解决方案2】:
问题是嵌入初始视图控制器的 UINavigationController 的原因。我将 UINavigationController (NLNavigationController) 子类化并将初始导航控制器的自定义类设置为此 (NLNavigationController)。在新的子类中我有这个。
- (void)viewDidLoad {
[super viewDidLoad];
[self setNeedsStatusBarAppearanceUpdate];
}
-(BOOL)prefersStatusBarHidden{
return NO;
}
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
为了让所有这些工作我必须在 info.plist 中设置
查看基于控制器的状态栏外观设置为 YES
通过这些更改,我得到了以下结果。
https://i.stack.imgur.com/x88Ae.png