在iOS应用程序中使用字体(ttf或odf) - 它们是否有效可能会受到影响? (SourceSansPro-ExtraLight)

时间:2013-12-06 04:47:42

标签: ios fonts

我在iOS应用程序中使用自定义字体已经取得了成功。

我按照以下步骤操作:

  1. 将字体拖入我的项目并复制到项目中
  2. 确保字体包含在Build Phases
  3. 将字体名称(包括扩展名)添加到应用程序的plist文件中。我确认我使用的是postscript名称:SourceSansPro-ExtraLight.ttf
  4. 尝试使用字体

    self.daysLeftLabel.font = [UIFont fontWithName:@“SourceSansPro-ExtraLight”尺寸:14];

  5. 但是,只使用通用系统字体。

    如果我在代码中运行此代码示例:

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

    Source Sans Pro字体系列不包含在此中,因此无法正常工作。

    问题是,我按照与其他自定义TTF字体完全相同的顺序,它们按预期工作。据我所知,我正在做的一切 - 包括plist文件中经常遗漏的postscript名称以及扩展名。

    所以,我开始怀疑某些TTF字体是否与iOS兼容而另一些则不兼容。是这种情况吗?

2 个答案:

答案 0 :(得分:1)

出现此问题的原因有多种,您必须检查以下内容:

  1. 确保勾选将项目复制到destinaton的群组文件夹
  2. 的复选框
  3. 确保目标中包含的字体。您可以查看目标会员
  4. 检查捆绑资源中是否存在您的文件。转到目标 - >构建阶段 - >复制捆绑资源
  5. 应用程序plist 中添加字体 enter image description here

  6. 查找字体名称。它可能与文件名不同。因此,您可以使用for循环查找字体名称。

    for([UIFont familyNames]中的NSString *系列) {     NSLog(@“%@”,家庭);

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

    }

    将此字体名称用作

    label.font = [UIFont fontWithName:@“font-name”size:20];

答案 1 :(得分:0)

我也有同样的问题,你必须在info.plist文件中添加实际文件名而不是字体名。在UILabel中定义字体时,您必须使用真正的字体名称。