2010年11月22日 星期一

[筆記] 設定Navigation bar的背景色 (with Three20)

在iOS上的application通常會有一條Navigation bar用來放置如"上一頁"或"Refresh"這類按鈕的, 像是下圖

不過老是藍藍的, 不是那麼好看, 想了半天, 決定把它改成黑的

試了兩種方法:

1. 直接改TTBaseViewController的Navigation bar的tint color:

 

self.navigationBarTintColor = [UIColor blackColor];

 

這個property並不存在UIViewController裡面, 而是只有Three20裡的TTBaseViewController才有提供, 不過這方法並不優, 理由是, 每個screen都得自己這樣做

2. 用TTDefaultStyleSheet

這算是Three20蠻強大的一個功能之一, 透過指定Global的Stylesheet就可以替換顏色跟字型, 如果多準備幾個Stylesheet, 還可以做到換Theme的功能

首先要準備一個class繼承自TTDefaultStyleSheet

 

@interface DefaultStyleSheetA : TTDefaultStyleSheet {

 

由於是要改掉Navigation bar的顏色所以要自行Override掉navigationBarTintColor:

-(UIColor *) navigationBarTintColor {

return RGBCOLOR(20, 20, 30);

}

最後, 就把global stylesheet設成這個, 就大功告成了

[TTDefaultStyleSheet setGlobalStyleSheet:[[DefaultStyleSheetA alloc] init]];