【问题标题】:UINavigationBar custom font not working on iOS 8UINavigationBar 自定义字体在 iOS 8 上不起作用
【发布时间】:2014-11-05 21:00:37
【问题描述】:

我花了几个小时尝试在 iOS 8 上为导航栏标题使用自定义字体。这在 iOS 7 上运行良好:

UIFont *font = [UIFont fontWithName:@"Gotham-Bold" size:12];
NSDictionary *textAttributes = @{ NSFontAttributeName: font };
self.navigationController.navigationBar.titleTextAttributes = textAttributes;

但在 iOS 8 上,文本只是消失了。更改颜色或系统字体大小可以完美运行,但尝试使用自定义字体根本行不通。有人对此有任何想法吗?

谢谢!

编辑

我创建了一个小项目,您可以自己尝试一下: https://github.com/noquepoaqui/customHeaderFont

这些代码行在第 30 行的 MasterViewController 上。

【问题讨论】:

  • 你在哪里执行这段代码?更好的方法是使用 UIAppearance 代理并在应用程序范围内更改它
  • 我也尝试过[[UINavigationBar appearance] setTitleAttributes:textAttributes]; 并得到相同的结果
  • 可以和自定义字体有关吗?您可以尝试使用其中一种默认字体对其进行自定义吗?
  • 我在格鲁吉亚试过了,效果很好。

标签: objective-c ios8 uinavigationbar


【解决方案1】:

您在分配属性时有一个错字:

应该是:

self.navigationController.navigationBar.titleTextAttributes

代替:

self.navigationController.navigationBar.TitleTextAttributes

如果这不能解决问题,您可以通过将此代码放在 AppDelegate 的 didFinishLoadingWithOptions 中来测试是否正确添加了字体。这将打印您的应用程序的所有可用字体。只需查看输出窗口并搜索您的字体名称(Gotham-Bold)。如果未列出,您可以从项目中删除字体并通过拖放再次添加。确保在出现的对话框中勾选您的应用旁边的“添加到目标”。

//list all available fonts
for (NSString *family in [UIFont familyNames]) {
    NSLog(@"---------- %@ ----------", family.uppercaseString);
    NSArray *names = [UIFont fontNamesForFamilyName:family];
    for (NSString *font in names) NSLog(@"%@", font);
}

【讨论】:

  • 字体在列表中,我在应用程序的其他部分使用它,我只是不能让它在导航栏标题上工作
  • 你能用一个导航视图控制器制作一个示例项目并复制问题吗?如果它有同样的问题,你能发布一个指向你的示例项目的链接吗?
  • 我已经编辑了我的问题,添加了一个指向带有示例项目的 github 页面的链接。
【解决方案2】:

我使用的 .ttf 字体效果不佳。我已经安装了 .otf 版本,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 2013-06-06
    • 1970-01-01
    • 2012-04-23
    • 1970-01-01
    • 2018-11-23
    • 2013-02-09
    相关资源
    最近更新 更多