IOS中的自定义字体无显示(.otf类型)

时间:2016-07-26 07:47:49

标签: ios objective-c iphone xcode fonts

我的下方San Fransico字体不起作用 Download here and test

我已在.plist中添加了所有otf文件,并使用该名称在代码中使用字体管理器设置字体,如下所示

lbl_1.font = [UIFont fontWithName:@"SFUIDisplay-Bold" size:20];
lbl_2.font = [UIFont fontWithName:@"SFUIDisplay-Medium" size:20];
lbl_3.font = [UIFont fontWithName:@"SFUIText-Light" size:20];
lbl_4.font = [UIFont fontWithName:@"SFUIText-Regular" size:20];
lbl_5.font = [UIFont fontWithName:@"SFUIText-Semibold" size:20];

注意:我使用Zil回答下载.ttf及其工作

3 个答案:

答案 0 :(得分:5)

字体无法正常运行时出现常见错误,让我列出所有错误,并且我们确定您会发现问题:

  • 确保您已在项目中添加了字体,并且您可以在XCode中看到它们。您可以将它们放在根文件夹或特定文件夹中。

  • 确保他们拥有正确的目标,或者确实他们确实有目标;)勾选方框并确定您的目标

请看这个图像的第1点& 2。 fonts are in the right folder and have correct target

  • 确保您的图片包含在当前捆绑包的资源中:

enter image description here

  • 请确保在.plist文件中引用它们,如果它们位于cusotm文件夹中,我非常确定您需要记下相对路径,而不仅仅是名称。

enter image description here

  • 请确保您使用正确的字体名称,您可以使用以下代码段找到:

Objective-C:

for (NSString* family in [UIFont familyNames])
{
    NSLog(@"%@", family);

    for (NSString* name in [UIFont fontNamesForFamilyName: family])
    {
        NSLog(@"  %@", name);
    }
}

夫特:

for family: String in UIFont.familyNames()
{
     print("\(family)")
     for names: String in UIFont.fontNamesForFamilyName(family)
     {
         print("== \(names)")
     }
}

请勿忘记在完成后删除该代码。这有助于确保您确实使用了字体的正确系列名称,这有时可能与您使用OSX的字体查看器看到的实际名称不同。

注意:如果你的字体没有'打印,这意味着他们不在项目中,如果他们打印,这意味着你没有成功加载它们,但他们在项目中。这一具体步骤可以帮助您查明问题。

enter image description here

  • 实际使用字体:

    UIFont myFont = [UIFont fontWithName:@"QuicksandDash-Regular" size:35];
    

感谢Chris提供实际提示

我100%确定正确答案就在这里,所以请确保一切都正确无误。除非您已经针对使用字体做了一些特别的事情,否则重复这些步骤就足够了。  您可以尝试使用空项目并比较结果,这通常有助于遇到"无法解决的问题"

答案 1 :(得分:1)

第1步:  确保在项目中添加了字体。

第2步: 确保在info.plist

中添加了字体

第3步: 确保在Copy Bundle Resources中添加了字体 enter image description here

答案 2 :(得分:1)

第1步:确保在项目中添加了字体文件。

第2步:在AppDelegate中运行以下代码并检查您获得的字体名称。

for (NSString *familyName in [UIFont familyNames]){
    NSLog(@"Family name: %@", familyName);
    for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
        NSLog(@"--Font name: %@", fontName);
    }
}

可能是字体名称与您使用的字体名称不同。