applicationDidEnterBackground更改navigationColor

时间:2014-06-24 08:58:37

标签: ios ios7 uinavigationbar

我正在尝试使用applicationDidFinishLaunching上添加的以下代码设置navigationBar颜色:

//Set tint color
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

//Set title attributes
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                      [UIFont fontWithName:@"Pacifico" size:21],
                                                      NSFontAttributeName, [UIColor whiteColor], NSForegroundColorAttributeName, nil]];

//Set navigationBar color
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor];

一切正常,应用程序启动和颜色正确如下图所示

Application on foreground

当我按照以下步骤操作时会发生问题:

  1. 我按主页按钮应用程序进入后台。
  2. 我双击主页按钮查看我的应用程序,但是在导航颜色 RED 中显示但不是 RED ,但 BLACK 渐变 RED
  3. 我点击打开它,再次加载 RED 颜色。 (以下截图)
  4. 也许这个问题与tabBarController.tabBarColor有关,因为我把它设置为黑色!

    Application on background

    我不知道为什么会发生这种情况,如果全球色调出现问题,我也不知道!这个问题发生在任何人身上吗?知道怎么解决吗?

2 个答案:

答案 0 :(得分:0)

您要查找的方法不是applicationDidEnterBackground:applicationWillEnterForeground:。您应该使用applicationWillResignActive:applicationDidBecomeActive:

以下是它们的工作原理。如果您通过按主页按钮最小化应用程序,则会按此顺序调用applicationWillResignActive:applicationDidEnterBackground:。最大化您的应用applicationWillEnterForeground:并调用applicationDidBecomeActive:后,再次按相同顺序调用。但是,当您双击主页按钮查看最近使用的应用时,系统只会调用applicationWillResignActive:,从此视图中选择您的应用只会调用applicationDidBecomeActive:。所以这些是你应该使用的方法。

警告但是,如果您的应用处于有效状态,并且您通过拖动屏幕的底部/顶部边缘打开控制中心或通知中心,也会调用这些方法。

希望您可以使用此信息。

答案 1 :(得分:0)

对于那些遇到同样问题的人,这与背景或前景无关。它只是TopViews下的内容。

最后我找到了解决方案

在顶栏下延伸边缘 未选中,我对其进行了检查,并且可以正常工作。

  1. 对于那些不知道如何展示这个内容的人,请在故事板上查看viewController,点击它。
  2. 在右侧停靠栏中显示属性检查器(第四个按钮)
  3. 有一部分写有Extend Edges
  4. 检查顶部栏,运行应用程序,一切都应该没问题
  5. enter image description here

    我不知道导致此问题的原因是让navBar变为黑色(我的意思是没有内容的部分,它只是视图的一部分)