改变导航栏的颜色

时间:2009-06-02 22:45:59

标签: iphone cocoa-touch

如何更改导航栏的默认蓝色颜色?

感谢。

3 个答案:

答案 0 :(得分:4)

UINavigationBar类具有UIColor *tintColor属性,您可以在代码中进行更改。

或者,此属性也在InterfaceBuilder UI设计工具中公开。

答案 1 :(得分:4)

假设您已经以编程方式而不是在Interface Builder中添加了导航栏,只需将其放在viewDidLoad方法中即可。

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

答案 2 :(得分:0)

TintColor属性不会影响导航栏的默认子视图作为底部边框和阴影。有时候覆盖导航栏的布局很有用。

尽管navigationBar是UINavigationController的只读属性,但您可以避免 这个限制是“setValue:forKey:”。该方法已获得成功提交至AppStore的5个申请的批准。

您可以根据需要继承UINavigationBar并更改drawRect:方法。 例如,

@implementation CustomNavigationBar

- (void) drawRect:(CGRect)rect
{
    [super drawRect:rect];
    UIImage *backgroundImage = ImageFromColor(WANTED_COLOR);
    [backgroundImage drawInRect:rect];
}

您可以继承UINavigationController并更改initWithRootViewController:

- (id) initWithRootViewController:(UIViewController *)rootViewController
{
    self = [super initWithRootViewController:rootViewController]; 
    if (self) 
    {
        CustomNavigationBar *navBar = [CustomNavigationBar new];
        [self setValue:navBar forKey:@"navigationBar"];
    }
    return self;
}

此外,您可以通过为UINavigationController创建Category并为initWithRootViewController实现方法调整来改变这种方法:

P.S。昨天我的新应用程序出现在AppStore,没有任何问题。