美文网首页
(Swift) 系统状态栏前景色

(Swift) 系统状态栏前景色

作者: 布呐呐u | 来源:发表于2025-05-31 20:59 被阅读0次

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()
    

相关文章

网友评论

      本文标题:(Swift) 系统状态栏前景色

      本文链接:https://www.haomeiwen.com/subject/mtjswjtx.html