2012-07-01 90 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