7

你好,这是我的问题:

在我的 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 添加任何更改),一切正常,但我需要在我的应用程序中自定义状态栏颜色。

4

2 回答 2

6

您将需要像这样子类化UISearchController和覆盖preferredStatusBarStyle

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}
于 2015-06-23T01:14:50.160 回答
0

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

这应该适用于您的其余代码。

于 2015-03-10T14:49:08.997 回答