自定义字体仅在 Interface Builder 中设置时可用

Max*_*axB 5 fonts ios

我在我的项目中添加了自定义字体。它包含在目标中,并添加到 plist 中。当我尝试以编程方式使用它时,它不起作用,并且当我打印出可用字体列表时它也不会显示。但是,它确实显示为 Interface Builder 中的一个选项,如果我在 IB 中将标签文本设置为该字体,它可以正常工作并在我打印出可用字体列表时显示。这是 XCode 6.4 和 iOS 8.0

当它通过 IB 工作时,它会以这样的字体名称打印出来:Special Elite SpecialElite-Regular

我以编程方式调用字体,如: [UIFont fontWithName:@"SpecialElite-Regular" size:fontSize];

使用内置字体执行此操作时没有问题。

mat*_*att 2

\n

当我尝试以编程方式使用它时,它不起作用,并且当我打印出可用字体列表时它不会显示

\n
\n\n

这证明您实际上没有将其正确包含在目标和Info.plist中。

\n\n

它似乎在 IB 中工作的原因是这种字体也存在于您的计算机上。但事实上,如果你要在你的设备上运行这个应用程序,你会发现即使在 IB 中设置字体也不起作用。

\n\n

您的字体是Special Elite。如您所见,我在正在运行的应用程序中可以看到它:

\n\n

在此输入图像描述

\n\n

这是我使用的代码:

\n\n
    let lab = UILabel()\n    lab.text = "This is a test"\n    lab.font = UIFont(name:"SpecialElite-Regular", size:18)\n    lab.sizeToFit()\n    lab.frame.origin = CGPointMake(100,100)\n    self.view.addSubview(lab)\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以你看,如果正确加载,可以在代码 \xe2\x80\x94 中引用该字体。您显然没有正确加载它。它不在您的应用程序包中,或者不在复制构建阶段,或者未在您的Info.plist中正确列出。

\n\n

(当然,您总是有可能使用[UIFont fontWithName:size:]错误的名称或大小值进行调用。)

\n