iOS改变状态栏文字颜色
UINavigationController不会将 preferredStatusBarStyle 方法调用转给它的子视图,而是由它 自己管理状态 ,而且它也应该那样做.因为 UINavigationController 包含了它自己的状态栏因此就算 UINavigationController 中的 viewController 实现了 preferredStatusBarStyle 方法 也不会调用那 UINavigationController 是怎么决定 该返回 UIStatusBarStyleLightContent 还是 UIStatusBarStyleDefault 的呢? 它是基于它的 UINavigationBar.barStyle 属性.默认 (UIBarStyleDefault) 的是 黑色 文本的状态栏 而 UIBarStyleBlack 是设置为 白色 文本的状态栏。
可以在自定义的导航控制器中或者系统导航控制器中的类别中添加代码
-(UIStatusBarStyle)preferredStatusBarStyle
{
return self.topViewController.preferredStatusBarStyle;
}
比如有这样的一个需求,默认大多数界面的状态栏文本颜色为白色,个别为黑色,可以为项目中自定义的父控制器或者UIViewController的类别中添加代码
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
在需要的改变的个别页面中添加代码
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
注意:info里面如果你加了View controller-based status bar appearance,设置为YES,如果设置为NO,上面的代码没效果
网友评论