我正在UIStatusBar上方显示一个UIWindow, 默认情况下,UIStatusBarStyle设置为UIStatusBarStyleLightContent,但当我显示UIWindow时,UIStatusBarStyle会切换到黑色样式。
我正在UIStatusBar上方显示一个UIWindow, 默认情况下,UIStatusBarStyle设置为UIStatusBarStyleLightContent,但当我显示UIWindow时,UIStatusBarStyle会切换到黑色样式。
我在遇到同样的问题时发现了这个主题。你需要做的是创建一个新的视图控制器,并将其设置为你要显示在其他视图上方的 UIWindow
的根视图控制器。然后,在这个新的视图控制器中像这样实现 preferredStatusBarStyle
方法:
- (UIStatusBarStyle) preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
或者,您可以在Info.plist中将“View controller-based status bar appearance”属性设置为NO,并实现Azabella建议的[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]
方法。但是,这会将所有视图的状态栏都设置为白色。如果这不是问题,那么就没有必要创建一个单独的视图控制器来设置preferredStatusBarStyle
方法。
modalPresentationCapturesStatusBarAppearance
设置为 true
即可解决。添加此代码,以便在视图出现时设置颜色/样式
-(void)viewDidAppear:(BOOL)animated {
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}