【问题标题】:In iOS7, UIBarButtonItems do not respect bold "Done" styling when using UIAppearance proxy在 iOS7 中,UIBarButtonItems 在使用 UIAppearance 代理时不尊重粗体“完成”样式
【发布时间】:2013-10-24 15:38:33
【问题描述】:

在 iOS7 中,默认情况下 UIBarButtonItem 对样式 UIBarButtonItemStylePlain 使用 Helvetica 常规粗细字体,对于 UIBarButtonItemStyleDone 使用粗体粗细。

我的应用使用自定义字体,并且我正在使用 UIAppearance 代理来实现这一点:

appearance = @{NSFontAttributeName: [UIFont fontWithName:@"ProximaNova-Regular" size:18.0]};
[[UIBarButtonItem appearance] setTitleTextAttributes:appearance
                                            forState:UIControlStateNormal];

问题是,外观代理使 Plain 和 Done 样式的按钮成为我上面指定的常规粗细字体。

有什么想法可以让 UIBarButtonItem 根据样式使用不同的自定义字体粗细吗?

【问题讨论】:

  • 嘿,马克,我知道这是一个迟来的答案,但您是否尝试过继承 UIBarButtonItem 并添加自定义视图?在这里查看这个答案:stackoverflow.com/questions/18844681/…。希望这会有所帮助:)

标签: ios uikit ios7 uibarbuttonitem uiappearance


【解决方案1】:

我知道这是迟到的答案,但它可能对某人有所帮助:

   UIBarButtonItem *customBarButton =
        [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"CustomTitle", @"This button appears in my smexy ViewController's naviagtion bar")
                                         style:UIBarButtonItemStylePlain
                                        target:self
                                        action:@selector(customButtonDidClick:)];

    NSDictionary *attributes = @{NSFontAttributeName: [UIFont fontWithName:@"TimesNewRomanPS-BoldMT" size:14.0f],
                                 NSForegroundColorAttributeName: [UIColor redColor]}; // here you can add some other keys (especially in iOS 7) to personalize your button title more 

    [customBarButton setTitleTextAttributes:attributes forState:UIControlStateNormal];

    [self.navigationItem setRightBarButtonItem:customBarButton];

已编辑:感谢您发现我的错字:-)

【讨论】:

  • 感谢@Neru!这样可行。仅供参考:字体字符串前面缺少@。
  • 我也没有,它没有使用外观代理....有什么方法可以通过外观代理来做到这一点?
猜你喜欢
  • 1970-01-01
  • 2013-02-21
  • 1970-01-01
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
相关资源
最近更新 更多