即使设置为亮,状态栏也会保持黑色

时间:2015-09-11 21:40:52

标签: ios iphone swift ipad

我的应用程序与Swift中的iPad和iPhone兼容,支持iOS 7和8,使用XCode 6.4。现在我将应用程序结构化为主 - 细节控制,并在分割控制器状态栏中设置为浅(白色)。在Storyboard中,所有控制器都显示白色状态栏(主控,详细信息,导航控制器...),但在模拟器中也不是iPhone / iPad中的白色状态栏是黑色的!

我尝试在每个控制器及其导航控制器中设置灯状态栏。在主视图控制器中尝试设置它。尝试添加plist选项,允许我设置每个视图控制器(请注意,我不想控制每个控制器的状态栏颜色,但要为应用程序设置全局)。还试图在状态栏样式中设置覆盖功能,甚至在viewDidLoad func中设置重载功能。没有任何效果。

我真的被困在这里;我认为只需设置分裂控制灯状态栏和其他任何地方它继承它(这就是它在stoyboard中的确如何看)。那我错过了什么?任何人都可以帮助我或在进一步调查中给我一些提示或指示吗?

以下是演示代码:https://goo.gl/U3Ynbc

非常感谢提前!

4 个答案:

答案 0 :(得分:5)

Info.plist中,将“查看基于控制器的状态栏外观”添加到YES

然后,在视图控制器子类中,重写此方法:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

答案 1 :(得分:1)

好的发现了。 在plist set"查看基于控制器的状态栏外观"在返回true之前,在func应用程序中的NO和appDelegate.swift中添加以下行: splitViewController.navigationController?.navigationBar.tintColor = UIColor.whiteColor()

答案 2 :(得分:0)

与提问者有相同的经历(在将.storyboard中的值设置为“Light Content”之后,在模拟器中看到statusBar前景白色,并尝试在使用splitView的应用程序的几个地方更改此内容),我在检查故事板的XML时发现这些是“模拟指标”。

当我将值UIStatusBarStyle添加到我的Info.plist,并将其设置为UIStatusBarStyleLightContent(这不是所提供的选项之一),然后运行,状态栏样式正确显示。 (这是在删除我放在.storyboard文件中的所有模拟指标变化之后)。

答案 3 :(得分:0)

如果要设置状态栏样式,应用程序级别,请在UIViewControllerBasedStatusBarAppearance文件中将NO设置为.plist

如果您要在视图控制器级别设置状态栏样式,请按照以下步骤操作:

  1. 如果您只需要在UIViewController级别设置状态栏样式,请在UIViewControllerBasedStatusBarAppearance文件中将YES设置为.plist
  2. 在viewDidLoad添加功能 - setNeedsStatusBarAppearanceUpdate

  3. 覆盖视图控制器中的preferredStatusBarStyle。

  4. -

    override func viewDidLoad() {
        super.viewDidLoad()
        self.setNeedsStatusBarAppearanceUpdate()
    }
    
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    

    根据状态栏样式设置级别设置.plist的值。 enter image description here