2012-01-20 26 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 

務必把這個在推視圖控制器。不是視圖控制器,你想看到這個後退按鈕的顏色。