如何在不覆盖drawRect的情况下更改uinavigationbar背景颜色:

时间:2011-08-01 18:52:33

标签: iphone objective-c xcode uinavigationcontroller uinavigationbar

我正试图找到一种方法为我的应用程序中的不同导航栏设置不同的背景颜色(我有几个视图,每个导航栏)。我不打算覆盖drawRect:因为它适用于整个应用程序。此外,使用tintcolor属性没有帮助,因为它仅适用于导航栏项目。

self.navigationController.navigationBar.tintColor = [UIColor greenColor];

我已经谷歌搜索了几天,无法找到解决这个问题的直接解决方案。怎么这么简单的事情怎么这么难?不明白为什么它不是uinavbar的财产...

有人请帮忙解决一个简单的问题...谢谢!

5 个答案:

答案 0 :(得分:6)

#import <QuartzCore/QuartzCore.h>

self.navigationController.navigationBar.layer.contents = (id)[UIImage imageNamed:@"navigationBarBackgroundImage"].CGImage;

self.navigationController.navigationBar.tintColor = [UIColor orangeColor];

因为你在没有内容属性之前抱怨。你需要导入quartzframework

答案 1 :(得分:1)

子类UINavigationBar并覆盖drawRect,然后仅在需要不同颜色的位置使用子类。 (并且你可以有一个方法,让你在初始化子类时传递颜色,或者如果你想要很多不同颜色的话)。

答案 2 :(得分:1)

当你说self.navBar setTintColor时会发生什么:[UIColor greenColor]];在eachView的viewDidLoad中。其中navBar被声明为链接到界面构建器中导航栏的IBOutlet UINavigationBar

答案 3 :(得分:1)

self.navigationController.navigationBar.backgroundColor = [UIColor greenColor];
self.navigationController.navigationBar.tintColor = [UIColor greenColor];

为我工作,非常简单。

答案 4 :(得分:0)

您拥有的代码是正确的。您需要将它放在创建导航控制器的位置。