导航栏 tintColor 在 iOS 6 应用程序的 iOS 7 兼容模式下不受尊重?

Posted

技术标签:

【中文标题】导航栏 tintColor 在 iOS 6 应用程序的 iOS 7 兼容模式下不受尊重?【英文标题】:Navbar tintColor not respected on iOS 7 compatibility mode for iOS 6 app? 【发布时间】:2013-09-19 19:44:24 【问题描述】:

我的应用程序的蓝色导航栏在 ios 7 上突然变为黑色/灰色。我的应用程序尚未升级到 iOS 7,也没有使用 Xcode 5 重新编译。我希望在兼容模式下的 iOS 7 上看起来完全一样对于旧编译的 iOS 6,但我想我错了?

这是一个错误还是预期的行为?

为了您的信息,我没有使用UINavigationController。只是一个简单的UIView 在笔尖中,导航栏直接从界面生成器中拖出来。

【问题讨论】:

【参考方案1】:

我想你想要的是这样的:

UIColor *tintColor = [UIColor redColor];  
if ([navigationBar respondsToSelector:@selector(setBarTintColor:)])

    navigationBar.barTintColor = tintColor;

else

    navigationBar.tintColor = tintColor;
    navigationBar.translucent = NO;

在 iOS7 中,来自 UINavigationBar 的属性 tintColor 更改为仅对按钮(leftBarButtonItem/rightBarButtonItem)进行着色以声明用户可以点击它们。 “着色”整个条的新方法是使用 barTintColor(从 iOS7 开始可用)。

还有一个区别:

iOS7之前UINavigationBar的translucent属性默认为NO,现在为YES

希望这对您有所帮助。 :)

最好, 萨沙

【讨论】:

我知道它不支持在 Xcode 5 下使用 iOS 7.0 SDK 编译的较新应用程序,我需要检查一个条件,但我的仍然是在 iOS 6.1 SDK 下编译的。我已经好几个月没碰它了。 Aaaah allaire,我想我知道你的问题,一个月前我也遇到过这个问题。您有 iOS6 样式,但条的颜色错误。我在 WWDC 期间也遇到了这个问题。我想他们用 iOS7 beta 4 改变了它。你可以检查一下,如果你在你的测试设备上安装了最新的 iOS7? 没错,栏的颜色是深灰色,但按钮仍然是深蓝色。【参考方案2】:

在 iOS 7 上,导航栏的默认颜色是白色。蓝色是 iOS 6 中的默认导航颜色,因此可能只是将其设置为该操作系统版本的默认值。假设您的导航栏是默认的 iOS 6 蓝色。

【讨论】:

不,它不是默认的蓝色,我使用了 tintColor 属性。

以上是关于导航栏 tintColor 在 iOS 6 应用程序的 iOS 7 兼容模式下不受尊重?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:更改所有导航栏的 self.navigationController.navigationBar.tintColor 更改

影响应用程序的导航栏 tintColor 更改。问题

如何调整 UINavigationBar tintColor 以补偿 iOS6 中的新渐变效果?

如何在 iOS 7 中设置导航栏的色调颜色

iOS开发:关于UINavigationItem和tintColor的沉思

如何颜色选择 UIBarButtonItem tintColor