自定义字体显示在IB中但不在设备上显示

时间:2015-03-30 15:34:40

标签: ios objective-c fonts

我试图使用Open Sans系列中的字体。我将字体添加到我的Xcode项目中,我检查它们是否已添加到我的应用程序的资源包中,并将字体添加到我的Info.plist文件中。

当我在Interface Builder中编辑XIB时,在字体下拉菜单中选择自定义时,我可以在UILabel上使用Open Sans字体。字体在Interface Builder中的预览中正确呈现,但是当我在设备上启动应用程序时,字体不会应用于标签。

我尝试以编程方式设置字体,但这也没有用。而且我没有收到任何警告或错误。

我忘记了什么能够使用自定义字体?

运行iOS7的iPad Air和运行iOS8的iPhone 6上的行为相同。

7 个答案:

答案 0 :(得分:5)

转到目标 - >构建阶段 - >复制捆绑资源,在那里检查字体文件是否存在,如果没有按加号按钮并手动添加。有时字体文件不会自动添加到捆绑资源。

希望这有帮助。

答案 1 :(得分:3)

只需确保捆绑包中的所有字体都可用,尝试打印所有字体并检查您是否使用了正确的名称。 您可以使用app delegate的didFinishLaunchingWithOptions方法中的以下代码轻松完成此操作:

for (NSString *familyName in [UIFont familyNames]) {
    NSLog(@"Family Name : %@", familyName);
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
        NSLog(@"\tFont Name : %@", fontName);
    }
}

或在Swift中:

if let familyNames = UIFont.familyNames() as? [String] {
    for familyName in familyNames {
        println("Family : " + familyName)
        if let fontNames = UIFont.fontNamesForFamilyName(familyName) as? [String] {
            for fontName in fontNames {
                println("\tFont : " + fontName)
            }
        }
    }
}

swift代码不是最有效的,但应该用于检查字符串中是否存在字体。

答案 2 :(得分:2)

对我来说有用的是当我添加字体以检查我的应用名称前面的“添加到目标”时。

请参见此处的图片示例:

enter image description here

答案 3 :(得分:1)

确保您已在Info.plist中添加了字体。有一个名为"由应用程序提供的字体"必须包含您要使用的所有字体文件。

答案 4 :(得分:1)

我只是遇到了同样的问题...仍然有点......我想在同一个标​​签中混合字体,但是没有用... 解决方法是我尝试更改标签的IB属性检查器尝试将文本下拉列表从属性更改为普通...字体确实在设备中更改...所以我认为这是Xcode中的错误。

答案 5 :(得分:0)

您是否正确地将字体添加到info.plist中,以确定字体拼写的方式是否包含其文件扩展名?例如,OpenSans.ttf与opensans.ttf或opensans不同。要100%确定文件名,请右键单击您的字体文件,单击“获取信息”,然后选中“全名”说明。 要以编程方式添加字体,请关闭文件扩展名。例如,

myLabel.font = [UIFont fontWithName:@"OpenSans" size:32];

答案 6 :(得分:0)

如果您使用的是webfont,请下载.ttf文件并将其放入您的项目中。如果需要,复制项目上的复选标记

接下来在info plist上添加此内容

 <key>UIAppFonts</key>
    <array>
        <string>Your fontname.ttf</string>
        <string>Bakersfield Bold.ttf</string>
   </array>

现在看看字体系列名称。您也可以在字体文件中找到。从您下载的地方,您也将到达那里。就像我添加的字体ttf文件名是: Bakersfield Bold.ttf 这个字体名称是: Bakersfield-Bold 多数民众赞成快乐编码。