2014-02-23 69 views
1

字體解決改變的UINavigationBar的

通過更改「[UINavigationBar的外觀]」到「self.navigationController.navigationBar」我能夠進行更改實例本身,然後它得到了第一次加載作爲井

TLDR; UINavigationBar字體不會更改,除非我加載另一個視圖,然後返回到第一個視圖。

我有一個iOS7項目,我想改變,我已經在嵌入式我的項目UINavigationBar的外觀。

我做了一些研究,我發現,如果我想改變導航欄的字體,我將不得不這樣做的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的字體,但是如果我加載另一個視圖並繼續播放,它會更改。

回答

0

從您的代碼中可以看出,這些設置是在類上執行的,而不是在實例上執行的,這會在您創建新實例時解釋後面會有影響。 當調用applicationDidFinishLaunching時,已經創建了第一個酒吧實例,因此在課上進行設置爲時已晚。 嘗試在較早的時間點進行此設置,例如即使在你的main()中。在這種特殊情況下,您應該確定您正在進行班級設置,而不是在任何實例上進行設置。

+0

執行從viewDidLoad中在我的主代碼無影響:/ – Stene

0

你的屬性具有錯誤的名字,您需要:UITextAttributeFont,UITextAttributeTextColor