首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Swift 3中设置状态栏样式

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

Stack Overflow用户
提问于 2016-08-03 18:12:09
回答 12查看 222.3K关注 0票数 199

我使用的是Xcode8.0测试版4。

在以前的版本中,UIViewController具有设置状态栏样式的方法

代码语言:javascript
复制
public func preferredStatusBarStyle() -> UIStatusBarStyle

然而,我发现它在Swift 3中变成了"Get ONLY varaiable“。

代码语言:javascript
复制
public var preferredStatusBarStyle: UIStatusBarStyle { get } 

如何提供在我的UIViewController中使用的样式?

EN

回答 12

Stack Overflow用户

发布于 2016-08-03 18:52:21

您可以尝试覆盖返回的值,而不是设置它。该方法被声明为{ get },因此只需提供一个getter:

代码语言:javascript
复制
 override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

如果你有条件地设置它,你将需要调用setNeedsStatusBarAppearanceUpdate(),这样当你准备好的时候,它就会激活这个改变

票数 132
EN

Stack Overflow用户

发布于 2017-02-02 12:14:24

第一步,您需要在Info.plist文件中添加一行key:View controller-based status bar appearance和value NO。在这之后,在你的控制器中添加两个功能,只有该控制器才会生效:

代码语言:javascript
复制
override func viewWillAppear(_ animated: Bool) {
       super.viewWillAppear(animated)
       UIApplication.shared.statusBarStyle = .lightContent
}

override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        UIApplication.shared.statusBarStyle = .default    
}
票数 10
EN

Stack Overflow用户

发布于 2018-01-27 14:50:22

在处理导航栏时,似乎有一个关于状态栏文本颜色的小问题。

如果您希望将.plist条目视图基于控制器的状态栏外观设置为YES,那么当您有一个彩色导航栏时,它有时将不起作用。

例如:

代码语言:javascript
复制
override func viewWillAppear(_ animated: Bool) {
    let nav = self.navigationController?.navigationBar
    nav?.barTintColor = .red
    nav?.tintColor = .white
    nav?.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
    setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {return .lightContent}

即使您在AppDelegate中设置了以下内容,上面的代码也无法工作:

UIApplication.shared.statusBarStyle = .lightContent

对于那些仍在苦苦挣扎的人来说,显然它会根据导航栏中的样式来判断状态栏是亮还是暗。因此,我设法通过在viewWillAppear中添加以下行来修复此问题:

nav?.barStyle = UIBarStyle.black

当条形图样式为黑色时,它会监听被覆盖的变量。希望这对某些人有帮助:)

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38740648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档