当搜索栏成为第一个响应者时,UISearchController将状态栏样式重置为.Default

时间:2016-05-26 21:40:19

标签: ios swift

我正在使用UISearchController并将其搜索栏添加到表视图控制器的标题中:

enter image description here

我面临的问题是,当用户开始输入搜索栏,使其成为第一个响应者时,状态栏样式将恢复为.Default:

enter image description here

我正在使用preferredStatusBarStyle()在视图控制器中设置样式。相反,如果我使用info.plist设置样式并另外将“基于视图控制器的状态外观”键设置为NO,则样式保持为Light。

但是,将“基于视图控制器的状态外观”键设置为“否”不是一个选项,因为我有一些需要默认样式的VC和一些需要灯光样式的VC。

我尝试将样式重置为搜索栏委托方法(当它成为第一响应者时被调用),即:

func searchBarShouldBeginEditing(searchBar: UISearchBar) -> Bool
{
    UIApplication.sharedApplication().statusBarStyle = .LightContent
    self.setNeedsStatusBarAppearanceUpdate()
    return true
}

但这也不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

我不知道是否有另一种方法,但我通过实现UISearchController派生类并使用它来解决它:

$notificationsNumber

或者如果正在使用导航控制器,那么这将阻止调用preferredStatusBarStyle(),在这种情况下使用它:

UIApplication.sharedApplication()。statusBarStyle = .LightContent

确保在info.plist中“查看基于控制器的状态栏外观”设置为NO。

答案 1 :(得分:0)

SWIFT 3.0更新

调用导航控制器时:

UIApplication.shared.statusBarStyle = .lightContent(在viewDidLoad上)

+

在info.plist上设置View controller-based status bar appearance = NO