Today Widget中的自定义字体iOS总是返回nil

时间:2016-02-22 12:33:22

标签: ios uifont ios8-today-widget

我试图将自定义字体添加到今天的扩展名中。但字体总是返回nil。

1.将字体文件添加到todayWidget:

enter image description here

  1. 检查字体文件包含在todayWidget包中: enter image description here
  2. 今天widget的TodayViewController中的3.init字体总是返回nil:

    - (void)viewDidLoad {
      [super viewDidLoad];
       UIFont* ft = [UIFont fontWithName:@"octicons-local" size:20];
    }
    

    enter image description here

    我在主项目中使用了相同的方法,我可以获得自定义字体 我该如何解决?

5 个答案:

答案 0 :(得分:14)

可能是因为您忘了在.plist文件中添加密钥。

将键Fonts provided by application添加到新行。为您添加的每种字体添加项目。

答案 1 :(得分:0)

我有同样的问题并通过安装字体解决了。以下是步骤:
右键单击Project Navigator中的.otf文件 - >点击查找器中显示 - >双击查找器窗口中的字体,您将看到"安装"右下角的按钮,点击安装,然后检查你的应用程序。

希望这有效。

答案 2 :(得分:0)

我遇到了同样的问题,在我的案例中添加了完整的文件名,包括plist键Fonts provided by application下的文件扩展名。 enter image description here

答案 3 :(得分:0)

我在处理应用扩展程序时遇到了同样的问题。这里的一些答案帮助我解决了这个问题,但我想说清楚,也许更容易让其他开发人员面对同样的问题:

虽然字体在应用程序中工作,但它们没有在扩展中,因为

导致崩溃
UIFont(name: name.rawValue, size: size)

返回nil

字体位于应用程序本身的Info.plist文件中,但不在应用程序扩展程序的Info.plist中。因此,我必须使用密钥Info.plist手动向扩展程序Fonts provided by application添加一行,然后输入应用程序Info.plist文件的所有字体,直到匹配为止。然后它对我有用。

答案 4 :(得分:0)

我也遇到了这个问题,我发现targeting font to my target并将fonts providing by application置于plist中。但是当我试图检索字体时仍然没有。

可能是因为您使用的字体名称错误。

例如我遇到的问题

我拖入项目名称的字体为trenolt.otf

但使用此名称UIFont(name: "trenolt", size: 14)获取

根据Adding a Custom Font to Your App By Developer Documentation

我打印出所有字体系列和名称

for family in UIFont.familyNames.sorted() {
  let names = UIFont.fontNames(forFamilyName: family)
  print("Family: \(family) Font names: \(names)")
}

然后我进入控制台

["TruenoLt", "TruenoRg"]

现在使用打印的名称

UIFont(name: "TruenoLt", size: 14)

获取

<UICTFont: 0x7fbc39a168b0> font-family: "Trueno"; font-weight: normal; font-style: normal; font-size: 14.00pt