更改颜色导航栏,标签栏

时间:2010-10-23 14:36:45

标签: iphone objective-c xcode

如何更改导航栏,标签栏的颜色?

每次我改变它,我都不会得到我想要的颜色,它可以是渐变红色,也可以是渐变白色/银色。

但无法做到这一点,默认渐变蓝色和灰色看起来都不错,但尝试将其改为任何其他颜色,看起来很糟糕。

任何提示?如何做渐变?

1 个答案:

答案 0 :(得分:4)

对于导航栏,您可以使用:

[navigationController.navigationBar setTintColor:[UIColor redColor]; //Red as an example.

这会将导航栏的颜色和所有按钮的颜色设置为特定颜色,在本例中为红色。此属性也可以在Interface Builder中设置。

如果您想进一步自定义它,可以通过对图像进行子类化将UINavigationBar的背景设置为图像。像这样......

标题文件。

#import <UIKit/UIKit.h>

@interface UINavigationBar (CustomImage)

@end

实施文件。

#import "CustomNavigationBar.h"

@implementation UINavigationBar (CustomImage)

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

{
    if([self isMemberOfClass: [UINavigationBar class]]){
        UIImage *image = [UIImage imageNamed:@"bar.png"];
        CGContextClip(ctx);
        CGContextTranslateCTM(ctx, 0, image.size.height);
        CGContextScaleCTM(ctx, 1.0, -1.0);
        CGContextDrawImage(ctx, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height), image.CGImage);
    }else{
        [super drawLayer:layer inContext:ctx];
    }

}

@end

然后在Interface Builder中,在Identity选项卡下将UINavigationBar的类设置为(在本例中)CustomNavigationBar

如果您稍微更改代码以使其成为UITabBar的子类,则它可能与UITabBar一起使用,但我还没有尝试过。