更改UINavigationBar的字体

时间:2014-02-23 13:36:42

标签: ios iphone objective-c fonts uinavigationbar

解决

通过从“[UINavigationBar外观]”更改为“self.navigationController.navigationBar”,我能够对实例本身进行更改,然后第一次加载

TLDR; 除非我加载另一个视图然后返回第一个视图,否则UINavigationBar字体不会改变。

您好

我有一个iOS7项目,我想改变我嵌入项目的UINavigationBar的外观。

我做了一些研究,我发现如果我想更改NavigationBar的字体,我将不得不在AppDelegate.m和方法中执行此操作

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:

所以我在这里创建了这段代码:

- (void)changeAppearanceOfNavigationBar {
// Shadow
NSShadow *shadow = [[NSShadow alloc] init];

// Nagivation bar font
[[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],
                                                       NSForegroundColorAttributeName,
                                                       shadow, NSShadowAttributeName,
                                                       [UIFont fontWithName:@"HelveticaNeue-Thin" size:25.0],NSFontAttributeName, nil]];
NSLog(@"Font changed");
}

我从didFinishLaunchingWithOptions

调用此方法

所以,这段代码对字体没有任何作用,所以我试着用另一种方式来做。

在我的第一个视图控制器(主应用程序页面)中,我在viewDidLoad中执行相同的代码

- (void)viewDidLoad {
NSShadow *shadow = [[NSShadow alloc] init];
    [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],
                                                           NSForegroundColorAttributeName,
                                                           shadow, NSShadowAttributeName,
                                                           [UIFont fontWithName:@"HelveticaNeue-Thin" size:25.0],NSFontAttributeName, nil]];

    self.navigationItem.title = @"TITLEEEE";

}

这是我问题的“最佳”部分。 viewDidLoad中的此代码在启动时不会更改我的UINavigationBar的字体,但是如果我加载另一个视图并且segue返回,它会改变。

2 个答案:

答案 0 :(得分:0)

从代码中看,这些设置是在类上执行的,而不是在实例上执行的,这说明它在创建新实例后会生效。 当调用applicationDidFinishLaunching时,已经创建了条的第一个实例,因此在类上进行设置为时已晚。 尝试在较早的时候进行此设置,例如甚至在你的主()。在这种特殊情况下,您可以在类上进行设置,而不是在任何实例上进行设置。

答案 1 :(得分:0)

您的属性名称错误,您需要:UITextAttributeFont,UITextAttributeTextColor