(Swift) 系统状态栏前景色

Info.plist

  1. UIStatusBarHidden
一个布尔值,指示系统最初是否在应用程序启动时隐藏状态栏。
如果 为 YES, 则隐藏状态栏。如果为 NO, 则显示状态栏。
  1. UIStatusBarStyle
应用程序启动时状态栏的样式。
一种根据用户界面样式自动选择白色或黑色状态栏。这是默认的状态栏样式,因此通常不需要特殊配置,使用默认值即可。
  1. UIViewControllerBasedStatusBarAppearance
一个布尔值,指示系统是否基于当前视图控制器首选的样式来显示状态栏的外观。
如果为YES,则系统使用当前视图控制器的首选状态栏样式。如果为 NO,则使用UIApplication对象的状态栏样式。默认值为YES。

UIViewController

一)单个页面独立设置状态栏样式

  1. plist文件中,将UIViewControllerBasedStatusBarAppearance设置为YES
  2. 如果视图控制器嵌入在导航控制器或标签栏控制器中,需要重写childForStatusBarStyle方法
// 在 UINavigationController 的子类中
override var childForStatusBarStyle: UIViewController? { topViewController }
// 在 UITabBarController 的子类中
override var childForStatusBarStyle: UIViewController? { selectedViewController }
  1. 在单个UIViewController子类中,重写 preferredStatusBarStyle方法
override var preferredStatusBarStyle: UIStatusBarStyle { .lightContent }
  • 单个页面动态改变状态栏样式
    1. 手动执行setNeedsStatusBarAppearanceUpdate方法,系统会再次触发preferredStatusBarStyle方法
    self.setNeedsStatusBarAppearanceUpdate()
    

二)单个页面显示隐藏状态栏样式

  1. plist文件中,将UIViewControllerBasedStatusBarAppearance设置为YES
  2. 如果视图控制器嵌入在导航控制器或标签栏控制器中,需要重写childForStatusBarHidden方法
// 在 UINavigationController 的子类中
override var childForStatusBarHidden: UIViewController? { topViewController }
// 在 UITabBarController 的子类中
override var childForStatusBarHidden: UIViewController? { selectedViewController }
  1. 在单个UIViewController子类中,重写 prefersStatusBarHidden方法
override var prefersStatusBarHidden: Bool { true }
  • 单个页面动态改显示隐藏状态栏
    1. 手动执行setNeedsStatusBarAppearanceUpdate方法,系统会再次触发prefersStatusBarHidden方法
    self.setNeedsStatusBarAppearanceUpdate()
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容