iOS StatusBarStyle 在设置为浅色时不会改变
iOS StatusBarStyle not changing when set to light
我正在开发一个应用程序,我希望导航栏不可见并具有深色背景。我希望状态栏颜色为白色。我也想一开始隐藏状态栏。
我已将状态栏样式设置为浅色
但我得到的结果总是黑色文本状态栏,如下所示。
我曾尝试将 "View controller-based status bar appearance" 设置为 NO,结果是有一个隐藏的状态栏。我也尝试让 prefersStatusBarHidden 返回 NO 但仍然相同。
我试过 "View controller-based status bar appearance" 是,结果是黑色文本。我试着让 preferredStatusBarStyle 返回 UIStatusBarStyleLightContent 但还是一样。
我做错了什么。提前致谢。
AppDelegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
问题是嵌入了初始视图控制器的 UINavigationController 引起的。我已经子classed UINavigationController (NLNavigationController) 并将初始导航控制器的自定义 class 设置为此 ( NLNavigationController)。在新的 subclass 我有这个。
- (void)viewDidLoad {
[super viewDidLoad];
[self setNeedsStatusBarAppearanceUpdate];
}
-(BOOL)prefersStatusBarHidden{
return NO;
}
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
为了让所有这些都起作用,我必须在 info.plist
中设置
View controller-based status bar appearance set to YES
通过这些更改,我得到了以下结果。
https://i.stack.imgur.com/x88Ae.png
我正在开发一个应用程序,我希望导航栏不可见并具有深色背景。我希望状态栏颜色为白色。我也想一开始隐藏状态栏。
我已将状态栏样式设置为浅色
但我得到的结果总是黑色文本状态栏,如下所示。
我曾尝试将 "View controller-based status bar appearance" 设置为 NO,结果是有一个隐藏的状态栏。我也尝试让 prefersStatusBarHidden 返回 NO 但仍然相同。
我试过 "View controller-based status bar appearance" 是,结果是黑色文本。我试着让 preferredStatusBarStyle 返回 UIStatusBarStyleLightContent 但还是一样。
我做错了什么。提前致谢。
AppDelegate:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UIApplication.shared.statusBarStyle = .lightContent
return true
}
问题是嵌入了初始视图控制器的 UINavigationController 引起的。我已经子classed UINavigationController (NLNavigationController) 并将初始导航控制器的自定义 class 设置为此 ( NLNavigationController)。在新的 subclass 我有这个。
- (void)viewDidLoad {
[super viewDidLoad];
[self setNeedsStatusBarAppearanceUpdate];
}
-(BOOL)prefersStatusBarHidden{
return NO;
}
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent;
}
为了让所有这些都起作用,我必须在 info.plist
中设置View controller-based status bar appearance set to YES
通过这些更改,我得到了以下结果。
https://i.stack.imgur.com/x88Ae.png