升级到最新的Xcode后,UINavigationBar颜色已更改

时间:2014-04-01 18:20:34

标签: objective-c xcode uinavigationcontroller uinavigationbar uistoryboard

最近我已经将我的Xcode IDE更新到最新的iOS 7.1 SDK。出于某种原因,在使用新的Xcode 重新编译我的应用程序后,我得到了这种有线UINavigationBar背景颜色

我正在使用storyboard从主屏幕推送辅助视图控制器。辅助视图控制器是一个静态的设置表,也是使用storyboard构建的,并在其viewDidLoad方法中包含以下代码:

[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = nil;

我没有对此屏幕或应用中的任何其他屏幕进行任何其他更改。

这是以前的样子:

enter image description here

这就是现在的样子:

enter image description here

有谁知道可能导致这种情况的原因是什么?

干杯,

编辑:@Leo Natan -

当我尝试自己设置颜色时,例如,替换此行:

[self.navigationController.navigationBar setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault];

这一行:

[self.navigationController.navigationBar setBackgroundColor:[UIColor redColor]];

我明白了:红色只应用在没有状态栏的标题上,我该怎么办?

enter image description here

2 个答案:

答案 0 :(得分:1)

最新Xcode附带iOS7.1 SDK,其中Apple再次改变了颜色的计算方式。你必须再次使用你的颜色来在iOS7.1中实现类似的外观。

答案 1 :(得分:1)

也许你应该采取另一种方法。使用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中的外观代理。多数民众赞成我是如何做到的:

//Navigationbar
[[UINavigationBar appearance] setBarTintColor:lightOrangeColor];
[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"navbarAssets-backArrow-iOS7"]];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"navbarAssets-backArrow-iOS7"]];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UINavigationBar appearance] setTitleTextAttributes: @{NSForegroundColorAttributeName : [UIColor whiteColor]}];