首页投稿(暂停使用,暂停投稿)iOS开发技术分享

关于使用preferredStatusBarStyle修改状态栏

2016-07-21  本文已影响2356人  一本正经得胡说八道

今天在ViewController中使用preferredStatusBarStyle方法修改顶部状态栏颜色的时候无效,还是默认的黑色,设置断点发现并没有执行该方法,之前一直使用这个方法修改也没有出现这种情况。

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

}

- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleLightContent;
}
@end

最后发现是因为这次在ViewController中加入了UINavigationController使得导航控制器不会将preferredStatusBarStyle这个方法的调用转给它的子视图,而是由导航控制器本身进行管理,所以如果在包含UINavigationController的ViewController中实现preferredStatusBarStyle方法是无论如何都不会调用的。这种情况我们就需要用另外的方法修改状态栏的颜色了,在导航控制器的navigationBar中有barStyle这个属性,这个属性决定了状态栏文本颜色是黑色还是白色,默认是黑色的(UIBarStyleDefault),如果你想把状态栏文本颜色修改为白色,那么你就需要把barStyle修改为UIBarStyleBlack,导航条默认是浅色的,所以状态栏文本颜色为黑色,如果把导航条的barStyle改为深色,那么状态栏文本颜色就会变为白色,代码如下:

/** 将状态栏文本颜色设置为白色 */
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
/** 将状态栏文本颜色设置为黑色 ,默认就是黑色 */
self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

还有,假如你就是想用preferredStatusBarStyle修改的话,那就只能将导航条隐藏了。不过除非特殊情况,导航条还是需要使用不能隐藏的,这样就用上面的方法修改比较合适。

上一篇下一篇

猜你喜欢

热点阅读