2009-06-02 329 views
3

如何更改導航欄的默認藍色顏色?更改導航欄的顏色

謝謝。

+0

這是非常接近這個問題:http://stackoverflow.com/questions/901542/using-image-or-tint-color-on-uinavigationbar-in-iphone – 2009-06-03 12:40:09

回答

4

UINavigationBar類有一個UIColor *tintColor屬性,您可以在代碼中進行更改。

或者,此屬性也在InterfaceBuilder UI設計工具中公開。

+0

感謝您的回覆。如果我可以使用圖像作爲導航欄背景,請讓我知道嗎? – ebaccount 2009-06-02 23:34:15

4

假設您以編程方式添加了導航欄,而不是在Interface Builder中,只需將其放入viewDidLoad方法即可。

self.navigationController.navigationBar.tintColor = [UIColor grayColor]; 
0

TintColor屬性不會影響導航欄的默認子視圖作爲底部邊框和陰影。有時候,重寫導航欄的佈局是有用的。

儘管navigationBar是UINavigationController的只讀屬性,但您可以通過「setValue:forKey:」避免 此限制。這個方法在5個成功提交給AppStore的應用程序上獲得批准。

您可以繼承UINavigationBar並根據需要更改drawRect:方法。 例如,

@implementation CustomNavigationBar 

- (void) drawRect:(CGRect)rect 
{ 
    [super drawRect:rect]; 
    UIImage *backgroundImage = ImageFromColor(WANTED_COLOR); 
    [backgroundImage drawInRect:rect]; 
} 

後,你也可以繼承的UINavigationController和更改initWithRootViewController:

- (id) initWithRootViewController:(UIViewController *)rootViewController 
{ 
    self = [super initWithRootViewController:rootViewController]; 
    if (self) 
    { 
     CustomNavigationBar *navBar = [CustomNavigationBar new]; 
     [self setValue:navBar forKey:@"navigationBar"]; 
    } 
    return self; 
} 

你也可以改變由製作類別的UINavigationController和實現方法混寫的initWithRootViewController這種方法:

附:昨天我的新應用出現在AppStore,這種方法沒有任何問題。