【问题标题】:Navigation Bar Title Font Size导航栏标题字体大小
【发布时间】:2012-03-26 03:50:28
【问题描述】:

我需要在我的 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。

【问题讨论】:

    标签: iphone objective-c ios uinavigationcontroller


    【解决方案1】:

    你已经知道了,但你也可以使用以下属性方法。

    对于颜色,

    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;
    

    【讨论】:

    • 我发现没有正确导入字体时它不起作用
    【解决方案2】:

    需要抓取导航栏属性并使用@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:...];
    

    【讨论】:

    • 如果你只想让推送的视图有不同的字体怎么办?我希望我的根视图具有标准字体大小,但推送视图具有较小的字体。我可以设置较小的字体,但是当我返回根视图时,当我希望它成为标准尺寸时,字体仍然很小。
    【解决方案3】:

    从iOS7开始,我总是喜欢以下:

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

    关键字UITextAttributeFont已从iOS7中删除,您应该替换为 NSFontAttributeName.

    您可以使用 [self.navigationController.navigationBar setTitleTextAttributes:]来设置某人navigationController的外观,而[UINavigationBar appearance] setTitleTextAttributes:]直接适用于您的整个App。(当然您需要将它放在一个属性位置。)

    【讨论】:

      【解决方案4】:

      Swift 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)!];
      
       }
      

      【讨论】:

      • 最好的答案,尤其是这个带有外观()如果您需要更改所有样式
      【解决方案5】:

      我的例子

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

      【讨论】:

        猜你喜欢
        • 2016-01-30
        • 1970-01-01
        • 2016-04-26
        • 2013-10-12
        • 2016-01-28
        • 1970-01-01
        • 1970-01-01
        • 2017-01-19
        • 1970-01-01
        相关资源
        最近更新 更多