我的应用程序中有顶部条形颜色,因为导航栏是深棕色的:
当我点按搜索(此处为Keresés)时,以下代码将顶部栏颜色设置为深色内容:
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
}
所以它看起来像这样:
但是当我在字段中输入内容时,滚动结果列表,键盘解除,顶部栏恢复为白色。我该如何防止这种情况?
答案 0 :(得分:0)
在iOS 7中,状态栏样式默认情况下由UIViewController
方法-preferredStatusBarStyle
的返回值确定。此方法的默认实现返回UIStatusBarStyleDefault
。
将info.plist键UIViewControllerBasedStatusBarAppearance
设置为值NO
会返回iOS 7之前的样式,即从共享的UIApplication
对象获取状态栏外观
要解决此问题,您有两种选择:
1)在希望状态栏样式为非默认值的所有视图控制器中实现-preferredStatusBarStyle
方法
2)将关键字“查看基于控制器的状态栏外观”(UIViewControllerBasedStatusBarAppearance
)添加到info.plist文件中,并将其值设置为NO
答案 1 :(得分:0)
解决方案在此评论中:https://stackoverflow.com/a/19513714/511878
摘要:UINavigationController
不会将-preferredStatusBarStyle
转发给其子女。