状态栏隐藏
e1df0a28-6fa5-46b5-992c-39927dc83feb.png上图中和 Plist 文件中两个设置等效
Status bar is initially hidden(默认 NO)
Status bar style 字体颜色 (LightContent 白色、Default 黑色字体)
都是刚进入 App 时进入 LunchScreen 时的状态栏的设置
Application 设置:[UIApplication sharedApplication].statusBarHidden = YES;
View Controller 设置 :
- (BOOL)prefersStatusBarHidden{
return YES;
}
字体样式
Application 设置:[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
View Controller 设置:
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
在界面中不时改变样式,需要调用 setNeedsStatusBarAppearanceUpdate 方法,让它去调用 preferredStatusBarStyle
当 View Controller 在 Navigation Controller 中时,只会调用 Navigation Controller 的 preferredStatusStyle,不会调用 View Controller 的方法。
解决方法:
第一种:设置导航栏颜色 同时设置状态栏字体颜色
(1)self.navigationController.navigationBar.barStyle = UIBarStyleBlack; //(字体白色)
(2)self.navigationController.navigationBar.barStyle = UIBarStyleDefalut; //(字体黑色)
第二种:自定义一个 Navigation Controller 的子类,重写方法
- (UIViewController *)childViewControllerForStatusBarStyle {
return self.topViewController;
}
View controller-based status bar appearance (默认 YES)(状态栏是否隐藏和字体样式)
YES :View controller 优先级大于 Applicaiton
NO :以 Application 的设置为准,viewController 的 prefersStatusBarHidden 方法不会调用
背景颜色
第一种:NavigationBar 的 setBarTintColor 改变导航栏和状态栏的颜色
第二种:NavigationBar 的 setBackgroundImage:forBarMetrics 改变导航栏和状态栏的背景图
setBackgroundImage:forBarMetrics 的优先级比 setTintColor 高。
第三种:创建一个自定义 View,frame 为 CGRectMake(0,0,kScreenWidth,20),添加在 NavigationBar 上并修改希望的颜色
网友评论