2012-03-08 152 views
13

我需要在iPhone應用程序中更改一個視圖控制器的導航欄標題文本的大小。我正在使用iOS5,並嘗試了以下代碼:導航欄標題字體大小

if ([self.tabBarItem respondsToSelector:@selector(setTitleTextAttributes:)]) { 
    NSLog(@"*** Support method(iOS 5): setTitleTextAttributes:"); 
    [self.tabBarItem setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys: 
               [UIFont fontWithName:@"AmericanTypewriter" size:20.0f], UITextAttributeFont, 
               [UIColor blackColor], UITextAttributeTextColor, 
               [UIColor grayColor], UITextAttributeTextShadowColor, 
               [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)], UITextAttributeTextShadowOffset, 
               nil]]; 
} 

但是,這僅適用於tabBarItem。

回答

13

您需要獲取導航欄屬性和使用@property(nonatomic, copy) NSDictionary *titleTextAttributes

如需進一步信息見UINavigationBar Class ReferenceCustomizing UINavigationBar section

爲了更好地理解你的問題:你有什麼類型的控制器?

編輯

[self.navigationController.navigationBar setTitleTextAttributes:...]; 

如果你推送的控制器內訪問navigationController

[navigationController.navigationBar setTitleTextAttributes:...]; 

如果navigationController是您當前UINavigationController。當例如,如果您有下面的代碼這可以用於:

UINavigationController* navigationController = ...; 
[navigationController.navigationBar setTitleTextAttributes:...]; 
+1

如果你只希望推看法有不同的字體?我希望我的根視圖具有標準字體大小,但推送的視圖要有較小的字體。我已經將它設置爲較小的字體,但是當我回到根視圖時,當我希望它成爲標準尺寸時,字體仍然很小。 – 2012-10-31 21:24:28

25

你得到它了,但你也可以使用下面的屬性的方法。

顏色,

NSDictionary *attributes=[NSDictionary dictionaryWithObjectsAndKeys:[UIColor RedColor],UITextAttributeTextColor, nil]; 

self.navigationController.navigationBar.titleTextAttributes = attributes; 

尺寸,

NSDictionary *size = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:17.0],UITextAttributeFont, nil]; 

self.navigationController.navigationBar.titleTextAttributes = size; 

感謝。

對於iOS 7及以上

尺寸爲:

NSDictionary *size = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"Arial" size:17.0],NSFontAttributeName, nil]; 

self.navigationController.navigationBar.titleTextAttributes = size; 
+1

大小保持不變... – 2015-07-16 20:06:45

+0

顯示我的代碼 – 2015-07-17 09:49:42

+0

我發現它不工作時,字體沒有正確導入 – 2015-07-17 13:15:57

10

由於iOS7,我總是不喜歡以下:

[[UINavigationBar appearance] setTitleTextAttributes: 
    [NSDictionary dictionaryWithObjectsAndKeys: 
     [UIFont fontWithName:@"Helvetica-Bold" size:18.0],NSFontAttributeName, 
     nil]]; 

關鍵字UITextAttributeFont已經從iOS7鬱悶,你應該用 NSFontAttributeName來代替。

您可以使用 [self.navigationController.navigationBar setTitleTextAttributes:]設置有人navigationController的appearence,而[UINavigationBar appearance] setTitleTextAttributes:]作品爲您的整個應用程序直接。(當然,你需要把它放在一個物業位置。)

2

斯威夫特2。0:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
     UINavigationBar.appearance().titleTextAttributes = [ 
      NSFontAttributeName: UIFont(name: "DINNextLTW04-Regular", size: 20)! 
     ] 

     return true 
    } 

或者

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.navigationController?.navigationBarHidden = false 
    self.title = "SAMPLE" 

//Set Color 
    let attributes: AnyObject = [ NSForegroundColorAttributeName: UIColor.redColor()] 
    self.navigationController!.navigationBar.titleTextAttributes = attributes as? [String : AnyObject] 


//Set Font Size 
    self.navigationController!.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "Arial", size: 37.0)!]; 

} 
0

我的例子

guard let sansLightFont = UIFont(name: "OpenSans", size: 20) else { return } 
navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName : sansLightFont]