我想有一个应用程序包括一个自定义字体渲染文本,加载它,然后使用它与标准UIKit元素如UILabel。这可能吗?


当前回答

一个重要的注意事项:您应该使用与字体相关的“PostScript名称”,而不是其全名或家族名称。此名称通常与字体的正常名称不同。

其他回答

遵循这个步骤

1)在项目中复制你的字体

2)以源代码模式打开你的.plist文件…(注意-不要打开info.plist)

3)在此之前-右键单击你的字体,在fontforge或类似的编辑器中打开它,并将其安装到你的系统中,它应该是安装的

4)类型

 <key>UIAppFonts</key>
<array>
    <string>MyriadPro.otf</string>
</array>

5)在你的类中输入这个代码。m

 [lblPoints setFont:[UIFont fontWithName:@"Myriad Pro" size:15.0]];

这里lblPoints将改变你的UILabel

完成了! ! 如果你的字体仍然不能工作,首先检查你的字体兼容性

查找ATSApplicationFontsPath

一个简单的plist条目,允许你在你的应用程序资源文件夹中包括字体文件,他们“只是工作”在你的应用程序中。

我建议大家参考我最喜欢的一个简短教程:http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/,上面的信息都来自这个网站。

第1步-将.ttf或.otf从Finder拖到项目中

注意-请确保在主应用程序目标上单击“添加到目标”框

如果你忘记单击将其添加到目标,然后单击项目层次结构中的字体文件,在右侧面板中单击目标会员部分中的主应用程序目标

要确保字体是应用目标的一部分,请确保它们出现在构建阶段的Copy Bundle Resources中

步骤2 -添加字体文件名到你的Plist

去自定义iOS目标属性在你的信息部分,并添加一个关键字,在该部分的项目,称为字体提供的应用程序(你应该看到它作为一个选项,当你输入它,它将自己设置为一个数组。点击小箭头打开数组项,输入你添加的.ttf或.otf文件的名称,让你的应用程序知道这些是你想要可用的字体文件

注意-如果你的应用程序在这一步之后崩溃,那么检查你在这里添加的项目的拼写

步骤3 -找出字体的名称,这样你就可以调用它们

通常情况下,应用程序看到的字体名称与基于该字体的文件名所认为的不同,将其放入代码中,并查看应用程序所做的日志,以查看在代码中调用的字体名称

斯威夫特

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

Objective - C

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

你的日志应该是这样的:

步骤4 -使用步骤3中的名称使用新的自定义字体

斯威夫特

 label.font = UIFont(name: "SourceSansPro-Regular", size: 18)

Objective - C

 label.font = [UIFont fontWithName:@"SourceSansPro-Regular" size:18];

您可以在资源文件夹中添加所需的“FONT”文件。然后转到项目信息。plist文件,并使用键“Fonts provided by the application”和值“FONT NAME”。

然后你可以调用方法[UIFont fontwithName:@"FONT NAME" size:12];

在信息。plist添加“Fonts provided by application”条目,并以字符串的形式包含字体名称:

Fonts provided by application
           Item 0        myfontname.ttf
           Item 1        myfontname-bold.ttf
           ...

然后运行以下命令,确保包含了你的字体:

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

请注意,您的ttf文件名可能与您设置标签字体时使用的名称不同(您可以使用上面的代码来获得"fontWithName"参数):

[label setFont:[UIFont fontWithName:@"MyFontName-Regular" size:18]];