【iOS 开发】Status Bar 状态栏设置汇总

2018-10-18  本文已影响0人  思绪飘零ing

最近写个demo 发现 现在的 iOS对于状态栏的显示以及颜色 出来了两套方法 已经 加载launch的时候的显示 或者隐藏 综合三个 结合在一起 就有点复杂 所以整理下 方便以后使用 

1 首先来谈一下 在加载launch 的时候 就是启动屏的时候的 状态栏的 隐藏与展示 

其实就是  这里 选择的问题 勾选上就会发现 当启动页的时候  状态栏会先隐藏 然后在显示出来 在info文件里面 就是这个字段

以上是 关于启动页的时候状态栏隐藏 还是现实的问题 .

下面是 关于状态栏 在正常VC里现实还是隐藏的问题 

如果想要用代码控制 全局的状态栏 隐藏还是显示 或者是单独页面的隐藏 显示  一共有两种方式 不过不管哪种方式 都需要我们在info文件里面 添加字段  View controller-based status bar appearance

1.  View controller-based status bar appearance这个字段 是bool 值 如果设置为 NO   那么控制 状态栏 显示与否  显示的白色 还是黑色 就用下面的方法 

    [UIApplication sharedApplication].statusBarHidden=  NO;

    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent; 

 此方法 是个全局方法 所以 你可以在任何地方用 这就可以实现 我们如果再启动屏幕的时候 隐藏了 状态栏  那我们就可以在 didFinishLaunchingWithOptions 里面 让电池栏显示出来 显示什么颜色  UIStatusBarStyleLightContent 白色        UIStatusBarStyleDefault  黑色 

(这里有个坑 那就是 当你在info文件里面 加入了这个View controller-based status bar appearance  之后 如果你在启动页 加载的时候 选择了 hide status bar  那么电池栏 就不会出现了 你需要主动调用 [UIApplication sharedApplication].statusBarHidden=  NO; 让电池栏显示出现 )

2 就是 当你 View controller-based status bar appearance 这个bool 值 给 yes 的时候 那么控制状态栏显示与否  显示的颜色  1 方法 就会失效   需要用到一下方法   (以下方法 是需要在 viewcontroller 里面重写 父类方法 实现的 以为所有vc 都需要实现  所以你可以 在baseviewcontroller 里面 实现下面俩方法 来控制全局的状态栏 显示的颜色)

- (BOOL)prefersStatusBarHidden { 

return YES;

}

- (UIStatusBarStyle)preferredStatusBarStyle {

return UIStatusBarStyleLightContent;

}

然后 针对于单独的viewcontroller 特殊的颜色 你可以在具体vc里重写 上面俩方法 

 特殊  如果你有 navagationController 作为视图容器  那么你还需要一个navigationController 作为过渡 父类 在里面 写出 下面俩方法

- (UIStatusBarStyle)preferredStatusBarStyle {

   UIViewController*topVC =self.topViewController;

     return  [topVC preferredStatusBarStyle];

}

- (BOOL)prefersStatusBarHidden { 

 UIViewController*topVC =self.topViewController;

return  [topVC  prefersStatusBarHidden];

}

上一篇 下一篇

猜你喜欢

热点阅读