2012-03-08 104 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]