当searchController处于活动状态时,状态栏样式会发生变化

时间:2015-08-15 14:35:35

标签: ios swift

在我的应用程序中,我已将状态栏样式设置为轻量级内容。enter image description here

但是,当搜索控制器处于活动状态时,它会重置为默认样式:enter image description here

我已经尝试了一切来解决这个问题,包括检查搜索控制器是否在if语句中处于活动状态,然后将导航栏的色调颜色更改为白色,并将状态栏样式设置为浅色内容。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

一些选项,这可能是一个错误的问题,但与此同时,你试过这个:

选项1:

info.plist,在info.plist中为"状态栏样式"设置选项,这是一个字符串值,其值为" UIStatusBarStyleLightContent"

另外,在你的infor.plist中,设置变量"查看基于控制器的状态栏外观"并将其值设置为" NO"

然后,在应用中的每个视图控制器中,在初始值设定项,ViewWillAppear和ViewDidLoad

中明确声明命令中的以下内容:
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent

选项2:

在您的info.plist中设置"状态栏样式"的选项到" UIStatusBarStyleLightContent"。此外,在您的infor.plist中,设置变量"查看基于控制器的状态栏外观"并将其值设置为"是"

然后,在每个视图控制器中放置以下方法

override func preferredStatusBarStyle() -> UIStatusBarStyle {
            return UIStatusBarStyle.LightContent;
        }

override func prefersStatusBarHidden() -> Bool {
    return false
}

此外,您可能需要执行以下操作:

    self.extendedLayoutIncludesOpaqueBars = true

另外,我将它翻译成Swift代码

答案 1 :(得分:3)

将此添加到您的代码中,使状态栏样式为Light:

   override func preferredStatusBarStyle() -> UIStatusBarStyle {

            return UIStatusBarStyle.LightContent;
        }

您还可以在信息列表中设置状态栏,它将在您的应用中保持不变,直到它在特定视图控制器的代码中被覆盖。

enter image description here