2012-07-01 213 views
0

我正在嘗試編寫移動基底調整以修改應用程序在UINavigationBar標題和按鈕中使用的默認字體顏色,例如 (例如,而不是默認的白色標題在Navbar中,所有的白色導航欄文字都會變成紅色,UINavigationBar更改默認字體顏色

希望這是有道理的。

此刻我想:

%hood UINavigationBar 
-(void)setTitleView:(id)arg1 { 
    %orig 
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 30)]; 
    titleLabel.textColor = [UIColor redColor] 
} 
%end 

我覺得它是因爲我正在嘗試設置一個新的UILabel而不是替換被拉默認setTitleView。

任何幫助將不勝感激:)

在此先感謝!

回答

0

在iOS 5+中,有一種使用UIAppearance協議來執行此操作的新方法。有一個關於如何使用它的好教程here

如果您需要支持的iOS 4的是,你可以創建UIViewController子類,創建類時覆蓋各種init*方法來設置屬性或viewDidLoadviewWillAppear等你的所有控制器可以然後從該繼承直接代替UIViewController

還有其他方法可以做到這一點,比如在UIViewController上添加類別方法或者調整其方法 - 但我認爲以上是最簡單的方法。

+0

所以我是說錯,在viewDidLoad方法需要重寫它調用導航欄的setTitleView方法,而是把它指向(例如) '[[UINavigationBar的外觀] setTitleTextAttributes: UITextAttributeColor, [UIColorWithRed:0.0綠色:0.0藍色:0.0 alpha:1.0]];' 如果我想讓titleText爲黑色 – BradStevenson

+0

只需在應用程序啓動時設置一次「外觀」屬性,然後再顯示任何視圖。如果您使用iOS 5的'UIAppearance'類,則不需要爲視圖控制器創建自己的超類。 – jhabbott