为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Swift 3中设置状态栏样式

如何在Swift 3中设置状态栏样式

一只萌萌小番薯 2019-12-09 09:52:05
我正在使用Xcode 8.0 beta 4。在以前的版本中,UIViewController具有设置状态栏样式的方法public func preferredStatusBarStyle() -> UIStatusBarStyle但是,我发现它在Swift 3中变成了“只获取变量”。public var preferredStatusBarStyle: UIStatusBarStyle { get } 如何提供在UIViewController中使用的样式?
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

适用于Xcode 10+和Swift 4.2+

这是iOS 7及更高版本的首选方法


在您的应用程序中Info.plist,将设置View controller-based status bar appearance为YES。


在每个视图控制器中覆盖preferredStatusBarStyle (Apple文档)。例如:


override var preferredStatusBarStyle: UIStatusBarStyle {     

      return .lightContent

}

如果preferredStatusBarStyle根据视图控制器内部发生的更改返回了不同的首选状态栏样式(例如,滚动位置或显示的图像是否为暗),则需要setNeedsStatusBarAppearanceUpdate()在状态更改时调用。


iOS 7之前的版本,不建议使用的方法


苹果已经弃用了此功能,因此将来会删除它。使用上述方法,以便在下一个iOS版本发布时不必重写它。


如果您的应用程序将支持在您的应用程序中Info.plist,请设置View controller-based status bar appearance为NO。


在appDelegate.swift的didFinishLaunchingWithOptions功能,加上:


UIApplication.shared.statusBarStyle = .lightContent

对于导航控制器


如果您使用导航控制器,并且希望使用每个视图控制器的首选状态栏样式并将其设置View controller-based status bar appearance为YES应用程序的info.plist


extension UINavigationController {

   open override var preferredStatusBarStyle: UIStatusBarStyle {

      return topViewController?.preferredStatusBarStyle ?? .default

   }

}


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 812 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信