【问题标题】:applicationDidEnterBackground changes navigationColorapplicationDidEnterBackground 更改 navigationColor
【发布时间】:2014-08-14 11:07:54
【问题描述】:

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

//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];

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

当我按照以下步骤操作时会出现问题:

  1. 我按主页按钮应用程序进入后台。
  2. 我双击主页按钮查看我的应用程序,但在导航颜色中显示但不是 RED 而是 BLACK 以带有 RED 的渐变。
  3. 我点击打开它,它再次加载颜色为 RED。 (下面的屏幕截图)

也许问题与 tabBarController.tabBarColor 有关,因为我将它设置为黑色!

我不知道为什么会发生这种情况,如果全局色调存在问题,我不知道!有人遇到过这个问题吗?知道如何解决吗?

【问题讨论】:

  • 在 viewWillAppear 上做:
  • 我在 viewDidLoad 和 awakeFromNib 上也试过同样的结果
  • 您使用的是真实设备?
  • @DylanGattey 是 iPhone 5,iOS 7.1.1
  • 另外因为忘记说了,我也在iPad Air上试过了,还是一样的结果。

标签: ios ios7 uinavigationbar


【解决方案1】:

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

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

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

希望您可以利用这些信息来发挥自己的优势。

【讨论】:

  • 我不想使用applicationWillResignActiveapplicationDidBecomeActive。我只想知道为什么颜色会变成渐变。在一个特定的 viewController 中,我已经正确设置了它,它没有渐变,我只想知道是什么原因导致它像我描述的那样!
  • 我很抱歉。但是,我创建了一个测试项目并尝试使用UINavigationControllers 作为UITabBarController 的每个选项卡中的控制器,并使用与applicationDidFinishLaunchingWithOptions: 中提到的完全相同的代码。就我而言,它工作正常。您确定我在回答中提到的其他方法中没有任何其他代码吗?我知道更改 navigationBar 的帧可能会导致奇怪的行为。我们可以看一些代码吗?
  • 我在完成启动时也使用[[UITabBar appearance] setBarTintColor:[UIColor blackColor]];UITabBar 上设置了barTintColor。仍然可以正常工作。
  • 感谢您的意见,这应该是一个不错的建议。为了让它正确,您在每个选项卡中为您的 navigationControllers(我的意思是来自故事板中的 IB)创建了一个 ViewController?
【解决方案2】:

对于那些有同样问题的人来说,这与背景或前景无关。只是TopViews下没有内容。

终于找到了解决办法

Extend Edges Under Top Bars未选中,我对其进行了检查,它确实有效。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 2012-04-08
    相关资源
    最近更新 更多