searchController和searchResultsController问题中的StatusBar:iOS 8

时间:2014-12-11 14:01:04

标签: ios8 appdelegate uistatusbar uisearchcontroller uisearchresultscontroller

嗨,这是我的问题:

在我的AppDeleagate的 didFinishLaunchingWithOptions:方法中,我有一个方法 [self configureUINavigationControllerStlyle]; ,它配置我的应用的状态栏和所有导航栏外观(我的应用程序中有UINavigationController和UITabbarController一起工作)。

-(void) configureUINavigationControllerStlyle {

UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;

UINavigationController *navigationController = (UINavigationController *)[tabBarController.viewControllers objectAtIndex:0];

navigationController.navigationBar.translucent = NO;

[[UINavigationBar appearance] setBarTintColor: [CustomColor getAwesomeColor:@"colorBlue3_1"]];

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

[[UINavigationBar appearance]  setTitleTextAttributes:@{
NSForegroundColorAttributeName : [UIColor whiteColor],
NSFontAttributeName: [UIFont fontWithName:@"AvenirNext-DemiBold" size:17.0]
 }];

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

}

同样在我的info.plist中我设置:查看基于控制器的状态栏外观为"否"

一切都运行良好,我的应用程序中的所有控制器都有蓝色背景和白色文本颜色的状态栏。但不是uisearchcontroller和uisearchresultscontroller。

我的根TableViewController看起来像这样:

https://www.dropbox.com/s/oqcozos89x9yqhg/Screen%20Shot%202014-12-11%20at%2016.21.06.jpg?dl=0

我在我的应用中集成了searchController和searchResultsController。 逻辑运行良好,但我不了解如何处理searchController和searchResultController中的状态栏外观。他们没有使用我在AppDelegate.m文件中创建的状态栏的样式。

我的searchController和searchResultsController看起来像这样(状态栏变为白色,状态栏的文字颜色也变成白色,但我需要我的状态栏与我的主视图控制器中的颜色相同(蓝色背景和白色文字颜色)

https://www.dropbox.com/s/26skdz7gvehmwl4/Screen%20Shot%202014-12-11%20at%2016.21.16.png?dl=0

另一个错误: 当我使用

navigationController.navigationBar.translucent = NO;

在我的AppDelegate中 - 它导致"跳跃或伸展"我在使用搜索控制器后从详细视图控制器返回时的家庭表视图。当我没有设置半透明的财产时 - 没有"跳跃"

在iOS 8中使用searchController时,也许有人知道如何修复状态栏颜色问题。

如果我使用默认颜色(不要对我的AppDelegate添加任何更改),一切正常,但我的应用程序中需要自定义状态栏颜色。

2 个答案:

答案 0 :(得分:6)

您需要继承UISearchController并覆盖preferredStatusBarStyle,如下所示:

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

答案 1 :(得分:0)

如果您想在状态栏中显示白色文字,请在info.plist内,确保Status bar style设置为Opaque black styleTransparent black style

这应该与你的其余代码一起使用。