【问题标题】:StatusBar in searchController and searchResultsController problems : iOS 8searchController 和 searchResultsController 中的 StatusBar 问题:iOS 8
【发布时间】:2014-12-11 14:01:03
【问题描述】:

您好,这是我的问题:

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

【问题讨论】:

标签: ios8 appdelegate uistatusbar uisearchcontroller uisearchresultscontroller


【解决方案1】:

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

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}

【讨论】:

  • 如果您要添加到 UISearchController 子类中,您还可以考虑添加 preferredStatusBarStyle 作为扩展。
  • 是的,扩展有效!extension UISearchController { public override func preferredStatusBarStyle() -> UIStatusBarStyle { return .LightContent } }
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2021-06-24
    • 2016-09-21
    • 1970-01-01
    • 2014-11-19
    • 2016-10-25
    • 2015-07-14
    • 2017-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多