iOS状态栏操作小结

找遍了网上一些设置状态栏的方法,没有比较全面的,所以自己总结了一个
设置样式和设置隐藏的方法基本一致,自行类比

iOS6及之前版本

Info.plist表单中设置 View controller-based status bar appearance字段为 NO(禁用系统自带的状态栏)
在代码中通过- (void)setStatusBarHidden:(BOOL)hidden animated:(BOOL)animated进行控制
这种方法对状态栏的修改是全局的,对所有视图控制器都会生效


iOS7及之后版本

  1. iOS6的方法被不被苹果推荐使用,会报警告
  2. 在你需要隐藏状态栏的视图控制器类中添加这个方法
    - (BOOL)prefersStatusBarHidden{ return YES; }
    设置YES就隐藏状态栏,设置NO显示状态栏
    系统会自动调用这个函数
    如果需要更改StatusBar的状态的话,可以使用在类中添加一个属性isStatusBarHidden,在init中初始化为你想要的值,添加这个方法
    - (BOOL)prefersStatusBarHidden{ return self.isStatusBarHidden; }
    在需要显示状态栏的时候调用
    self.isStatusBarHidden = NO; [self setNeedsStatusBarAppearanceUpdate];
    在需要隐藏状态栏的时候调用
    self.isStatusBarHidden = YES; [self setNeedsStatusBarAppearanceUpdate];
    setNeedsStatusBarAppearanceUpdate这个方法的作用是更新状态栏,在每次修改状态栏设置或者样式之后调用

注意:此方法对NavigationController无效,要使其生效可创建一个NavigationController的类别,增加这个方法
- (UIStatusBarStyle)preferredStatusBarStyle { return [[self topViewController] preferredStatusBarStyle]; }

这个函数的返回值默认返回nil,此时系统就会调用当前viewControllerA的preferredStatusBarStyle函数;如果返回值是另一个viewControllerB那么系统就会调用viewControllerB的preferredStatusBarStyle函数

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

推荐阅读更多精彩内容