【问题标题】:ios 7 UIBarButtonItem UIAppearance not setting fontios 7 UIBarButtonItem UIAppearance未设置字体
【发布时间】:2013-11-08 13:55:42
【问题描述】:

我正在使用这段代码为我的所有 UIBarButtonItems 设置默认字体(自定义):

NSDictionary *attributesBarButtonItem = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont fontWithName:@"ProximaNova-Light" size:18.0], NSFontAttributeName, nil];
[[UIBarButtonItem appearance] setTitleTextAttributes:attributesBarButtonItem forState:UIControlStateNormal];

NSLog(@"%@", [[UIBarButtonItem appearance] titleTextAttributesForState:UIControlStateNormal]);

但是,它似乎被忽略了,因为字体没有改变,并且 NSLog 返回 (null)。这有点令人困惑,因为它与我用来为所有导航栏设置默认字体的代码几乎相同,而且对它们来说效果很好。

这段代码放置在 AppDelegate 的 didFinishLaunchingWithOptions 中,但我也在其他 viewControllers (viewDidLoad) 中对其进行了测试,结果完全相同。

我注意到的其他奇怪行为: 我有一个标签栏控制器,当我加载任何带有栏按钮项目的 viewController 时它不起作用,但是如果我推动另一个 viewController 它可以工作(字体更改为选定的那个),即使它继续工作该 viewController 会弹出,但如果按下另一个选项卡,它将停止工作。

任何尝试为 UIBarButtonItems 设置默认字体的帮助将不胜感激。谢谢!

【问题讨论】:

  • 这个字体是从哪里来的?我不确定我是否听说过它
  • 这是一种自定义字体(如果您的意思是您没有在 SDK 提供的字体中看到它),但我认为这不是问题,因为我在某些 UILabel 上使用过它和导航栏都没有问题
  • iOS 10 仍然存在这个问题......这只是一个在雷达下飞行的错误吗?你找到解决办法了吗?
  • @Biniou 是的,他们在几次更新后修复了,我再也没有遇到过这个问题

标签: ios7 uibarbuttonitem uiappearance


【解决方案1】:

这是您的自定义字体吗?

可能会有一些问题:

  • 字体是TTF格式吗?
  • 如果您在 xcode 中单击字体,是否选中了右侧面板中的目标成员身份?
  • 您是否将字体添加到项目 plist 文件中?

您还应该在字典中使用 UITextAttributeFont

[UIBarButtonItem appearance] setTitleTextAttributes:@{UITextAttributeFont:[UIFont fontWithName:@"ProximaNova-Light" size:18.0]} [forState:forState:UIControlStateNormal];

【讨论】:

  • 自定义字体没有问题,正如我所说,它已经在导航栏和其他标签中工作(例如,它甚至不能使用 Helvetica Neue)。此外,UITextAttributeFont 在 ios 7 中已被弃用(我也尝试使用 UITextAttributeFont 为 ios 6 编译项目,但它也不起作用)。
【解决方案2】:

我遇到了类似的问题,因为我在设置外观属性之前创建了leftBarButtonItem。交换顺序以便首先设置外观可以解决问题。

【讨论】:

  • 我必须在我的应用委托中将其放入 willFinishLaunchingWithOptions 而不是 didFinishLaunchingWithOptions
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 2013-09-27
  • 2020-01-17
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多