您的位置:首页 > 移动开发 > IOS开发

关于iOS7里导航控制器中的子控制器设置StatusBar状态失效的问题

2014-02-13 16:53 309 查看
先说一下iOS7里控制StatusBar的两种方式:

第一种方式:全局控制StatusBar1. 在项目的Info.plist文件里设置UIViewControllerBasedStatusBarAppearance为NO。
2. 使用[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];方法设置颜色。

第二种方式:基于控制器的方式控制StatusBar1. 在项目的Info.plist文件里设置UIViewControllerBasedStatusBarAppearance为YES。2.在各个UIViewController里分别控制状态栏的颜色和状态。通过在控制器里实现以下方法来设置状态栏的颜色状态- (UIStatusBarStyle)preferredStatusBarStyle- (BOOL)prefersStatusBarHidden

目前只有两种颜色可选:UIStatusBarStyleLightContent - 白色字UIStatusBarStyleDefault - 黑色字

-------------------------

使用第二种方式的问题是,如果一个控制器在UINavigationController内,则上述的控制StatusBar的方法没有被调用。

解决办法:让UINavigationController实现- (UIViewController *)childViewControllerForStatusBarStyle方法。将顶层的控制器返回。这样就可以了。
可以写一个UINavigationController的category,实现该方法。包含到项目里。
- (UIViewController *)childViewControllerForStatusBarStyle
{
return self.topViewController;
}

本文出自 “rainbownight” 博客,请务必保留此出处http://rainbownight.blog.51cto.com/1336585/1358854
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐