说说iOS状态栏的问题。。
有个关键字非常重要
/// 就是这个。。
UIViewControllerBasedStatusBarAppearance
今天遇到来想修改状态栏的颜色,从VC1 push 到 VC2,想修改状态栏的颜色
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
发现不得行。然后又去info里面强制修改为
屏幕快照 2019-02-20 下午5.00.52.png
还是不得行。。。
就连隐藏都不得行。。
修改iOS状态栏的颜色
第一种方法,全局控制,UIApplication。
/// 如果要使用UIApplication 全局控制的话,就需要在info 里面加上 UIViewControllerBasedStatusBarAppearance 这个关键字,并且设置为NO,这样才可以使用,如下图:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
info 下面设置:UIViewControllerBasedStatusBarAppearance 关键字
第二种方法,使用ViewController下面的方法prefersStatusBarHidden。 和preferredStatusBarStyle 方法。这个方法需要修改 info.plist 下面 UIViewControllerBasedStatusBarAppearance 关键字为 true
- (BOOL)prefersStatusBarHidden {
return NO;
}
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
这种方法再遇到父子控制器的时候需要特殊处理。。
主要是Tab控制器和导航栏控制器,需要父控制器去获取子控制器的状态。。
// UITabBarController
- (UIStatusBarStyle)preferredStatusBarStyle {
return [self.selectedViewController preferredStatusBarStyle];
}
- (BOOL)prefersStatusBarHidden {
return [self.selectedViewController prefersStatusBarHidden];
}
// UINavigationController
- (UIStatusBarStyle)preferredStatusBarStyle {
return [self.visibleViewController preferredStatusBarStyle];
}
- (BOOL)prefersStatusBarHidden {
return [self.visibleViewController prefersStatusBarHidden];
}
网友评论