导航栏 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 更改
如何调整 UINavigationBar tintColor 以补偿 iOS6 中的新渐变效果?