更改导航控制器后退按钮的颜色

时间:2012-01-20 10:31:35

标签: iphone objective-c ios ipad

我想使用渐变来改变导航控制器的backButton的颜色。 我更改了navigatonBar的颜色,但无法更改backButton的颜色。 如果我使用self.navigationController.navigationBar.tintColor bar和backButton的颜色都改变了但是我想要像navigationBar那样使用渐变

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

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;
}

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分: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

请务必将其放入推送的视图控制器中。不是您想要查看此后退按钮颜色的视图控制器。

答案 1 :(得分: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];

这有帮助吗?