首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UIStatusBarStyle PreferredStatusBarStyle在iOS 7上不起作用

UIStatusBarStyle PreferredStatusBarStyle在iOS 7上不起作用
EN

Stack Overflow用户
提问于 2013-10-01 13:19:02
回答 12查看 81.5K关注 0票数 110

在我用Xcode5为iOS 7构建的iPhone应用程序中,我在info.plist中设置了UIViewControllerBasedStatusBarAppearance=YES,并且在我的ViewController中有这样的代码:

代码语言:javascript
复制
-(UIStatusBarStyle) preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

但状态栏在黑色背景下仍然是黑色的。

我知道可以通过在info.plist中设置UIViewControllerBasedStatusBarAppearance=NO来更改应用程序范围内的设置,但实际上我需要在运行时逐个viewController地更改它。

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2013-10-20 04:03:18

好了,这就是诀窍。您必须添加"View controller-based status bar“键,并将其值设置为No。

这与该键的含义相反,但即使您将该值设置为No,您仍然可以更改状态栏的外观,以及它是否显示在任何视图控制器中。所以它的行为类似于“是”,但设置为“否”!

现在,我可以将状态栏设置为白色或黑色。

票数 87
EN

Stack Overflow用户

发布于 2015-06-11 11:39:24

我可能来得有点晚,但以防其他人正在寻找一个有效的和经过验证的应用程序范围的解决方案。

@mxcl在描述为什么会发生这种情况时是正确的。为了纠正它,我们只需创建一个扩展(或obj-c中的类别)来覆盖UINavigationController的preferredSatusBarStyle()方法。以下是Swift中的一个示例:

代码语言:javascript
复制
extension UINavigationController {
    public override func preferredStatusBarStyle() -> UIStatusBarStyle {
        if let rootViewController = self.viewControllers.first {
            return rootViewController.preferredStatusBarStyle()
        }
        return super.preferredStatusBarStyle()
    }
}

这段代码只是提取第一个视图控制器(根视图控制器)并将其解包(在obj-c中,只需检查它是否为nil)。如果解包成功(不是nil),那么我们将获取rootViewControllers preferredStatusBarStyle。否则,我们只返回默认值。

希望这对任何可能需要它的人有所帮助。

票数 33
EN

Stack Overflow用户

发布于 2013-10-01 13:29:16

在viewDidLoad中,只需编写以下代码

代码语言:javascript
复制
[self setNeedsStatusBarAppearanceUpdate];

只要这样做,它就会起作用。

你能试一下这个吗?

代码语言:javascript
复制
Set UIViewControllerBasedStatusBarAppearance to NO.
Call [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

我在你的问题中看到的另一件事是,你写的方法是这样的

代码语言:javascript
复制
 -(void)UIStatusBarStyle PreferredStatusBarStyle ()
        {
            return UIStatusBarStyle.LightContent;
        }

但是它应该是这样的

代码语言:javascript
复制
-(UIStatusBarStyle)preferredStatusBarStyle{ 
    return UIStatusBarStyleLightContent; 
} 
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19108513

复制
相关文章

相似问题

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