关于iOS状态栏的问题。

说说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];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容