如何改变UINavigationBar的颜色?

时间:2012-02-09 06:00:55

标签: iphone uinavigationbar

我想更改UINavigationBar的颜色,颜色将从图像中获取。

5 个答案:

答案 0 :(得分:6)

尝试将对象设置为navigationBar的子视图。

设置色调颜色属性或使用图像

UINavigationController *controller = [[UINavigationController alloc] initWithRootViewController:rootController]; 
controller.navigationBar.tintColor = [UIColor blackColor];

答案 1 :(得分:2)

在iOS 7或更高版本中,请尝试以下操作:

navigationBar.barTintColor = [UIColor redColor];

答案 2 :(得分:1)

如果您仅支持iOS5及更高版本,则可以使用“外观代理”。有a good tutorial for this

如果必须支持以前的版本,则必须继承UINavigationBar并覆盖其drawRect方法。有a good sample code for this

答案 3 :(得分:0)

试试这个:

  1. 首先创建Objective C类,说CustomNavBar继承UINavigationBar类...
  2. 然后在appDelegate中导入此类...
  3. 然后将此代码放在appDelegate类的末尾代码...
  4. 然后打开您的MainWindow.xib并更改UINavigationBar class to CustomNavBar`。
  5. 代码:

    @implementation CustomNavBar (CustomNavBarCategory)
    
    -(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx 
    {
    
        if([self isMemberOfClass:[CustomNavBar class]])
        {
            UIImage *image;
    
            image=[UIImage imageNamed:@"ImageName"];
    
            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.layer drawLayer:layer inContext:ctx];     
        }
    
    }  
    
    @end
    

答案 4 :(得分:0)

有一种方法可以在xcode 6.4中的故事板中执行此操作。

从文档大纲中选择导航栏

比属性检查器更改条纹色

你也可以选择其他,这将带来颜色选择器

选择滴管,这样可以从图像中选择颜色