2012-01-20 29 views
1

我想要使用渐变来更改导航控制器的backButton的颜色。 我改变了navigatonBar的颜色,但无法改变backButton的颜色。 如果我使用self.navigationController.navigationBar.tintColor 两栏的颜色和后退按钮改变,但我想为我做的导航栏更改navigationController的backButton的颜色

CGRect navFrame = self.navigationController.navigationBar.frame; 
navFrame.origin.y = 0.0f; 
[self.navigationController.navigationBar.layer insertSublayer:[AddGradient addGradientToNavigationBar:navFrame] atIndex:0]; 
到aplly梯度

为addGradientToNavigationBar代码

+ (CAGradientLayer*)addGradientToNavigationBar:(CGRect)navRect { 

    CAGradientLayer *gradient = [CAGradientLayer layer]; 
    gradient.frame = navRect; 
    gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0] CGColor], 
         (id)[[XAppDelegate getColor] CGColor], nil]; 
    return gradient; 
} 

任何帮助将是赞赏。

回答

0

如果您的酒吧和按钮的颜色不必动态,我认为最好的方法是使用iOS 5 UIAppearance protocol。 创建一个可伸缩的图像(即具有可通过iOS的经常根据需要重复部分),做这样的事情:

[[UINavigationBar appearance] setBackgroundImage: [UIImage imageNamed:@"BarGradient.png"] 
            forBarMetrics: UIBarMetricsDefault]; 

[[UIBarButtonItem appearance] setBackgroundImage: [[UIImage imageNamed:@"BarButtonScalableGradient.png"] 
        resizableImageWithCapInsets: UIEdgeInsetsMake(15, 6, 15, 6)] 
             forState: UIControlStateNormal 
             barMetrics: UIBarMetricsDefault]; 

这是否帮助?

1

实现这行代码:

[[UIBarButtonItem appearance] setTintColor:[UIColor redColor]]; 

更换redColor用以下调整按钮的颜色:

colorWithRed:0/255.0 green:144/255.0 blue:200/255.0 alpha:1.0// pick your color using this 

务必把这个在推视图控制器。不是视图控制器,你想看到这个后退按钮的颜色。