Info.plist
- UIStatusBarHidden
一个布尔值,指示系统最初是否在应用程序启动时隐藏状态栏。
如果 为 YES, 则隐藏状态栏。如果为 NO, 则显示状态栏。
- UIStatusBarStyle
应用程序启动时状态栏的样式。
一种根据用户界面样式自动选择白色或黑色状态栏。这是默认的状态栏样式,因此通常不需要特殊配置,使用默认值即可。
- UIViewControllerBasedStatusBarAppearance
一个布尔值,指示系统是否基于当前视图控制器首选的样式来显示状态栏的外观。
如果为YES,则系统使用当前视图控制器的首选状态栏样式。如果为 NO,则使用UIApplication对象的状态栏样式。默认值为YES。
UIViewController
一)单个页面独立设置状态栏样式
- 在
plist文件中,将UIViewControllerBasedStatusBarAppearance设置为YES - 如果视图控制器嵌入在导航控制器或标签栏控制器中,需要重写
childForStatusBarStyle方法
// 在 UINavigationController 的子类中
override var childForStatusBarStyle: UIViewController? { topViewController }
// 在 UITabBarController 的子类中
override var childForStatusBarStyle: UIViewController? { selectedViewController }
- 在单个
UIViewController子类中,重写preferredStatusBarStyle方法
override var preferredStatusBarStyle: UIStatusBarStyle { .lightContent }
- 单个页面动态改变状态栏样式
- 手动执行
setNeedsStatusBarAppearanceUpdate方法,系统会再次触发preferredStatusBarStyle方法
self.setNeedsStatusBarAppearanceUpdate() - 手动执行
二)单个页面显示隐藏状态栏样式
- 在
plist文件中,将UIViewControllerBasedStatusBarAppearance设置为YES - 如果视图控制器嵌入在导航控制器或标签栏控制器中,需要重写
childForStatusBarHidden方法
// 在 UINavigationController 的子类中
override var childForStatusBarHidden: UIViewController? { topViewController }
// 在 UITabBarController 的子类中
override var childForStatusBarHidden: UIViewController? { selectedViewController }
- 在单个
UIViewController子类中,重写prefersStatusBarHidden方法
override var prefersStatusBarHidden: Bool { true }
- 单个页面动态改显示隐藏状态栏
- 手动执行
setNeedsStatusBarAppearanceUpdate方法,系统会再次触发prefersStatusBarHidden方法
self.setNeedsStatusBarAppearanceUpdate() - 手动执行












网友评论