如何在iPhone SDK中包含和使用新的字体?

我想在我的iphone应用程序中使用字体“MgOpen Modata”。 但是我没有看到它在属性检查器中的字体列表中。

如何包含该字体以便我可以使用它?

  1. 将字体文件添加到您的资源文件
  2. 编辑您的Info.plist :使用Fonts provided by application的键Fonts provided by application添加一个新条目。
  3. 对于每个文件,将文件名添加到该arrays

在下面的例子中,我添加了字体“DejaVu Sans Mono”:

Info.plist:添加自定义字体

在你的应用程序中,你可以使用[UIFont fontWithName:@"DejaVuSansMono-Bold" size:14.f]

或者如果你想在html / css中使用它,只需使用font-family:DejaVu Sans Mono;

注意:这在iOS 3.2及更高版本中可用。

我发现这个演练是最好的

虽然上述接受的答案确实工作,我发现,如果您将文本添加到XIB文件,然后将字体设置为我们的新字体,然后文本不会更新。

确保新的字体包含在解决此问题的资源中(直接从演练中获取):

“这不应该是一个问题,但有时当你无法让你的字体出现,这可能是一个头痛的源头,所以让我们现在仔细检查,以排除一个潜在的陷阱。

通过在解决scheme资源pipe理器中突出显示XCode项目文件,并在右侧select“构build阶段”,进入项目“构build阶段”窗格。 您将看到可以展开的部分之一是“复制捆绑软件资源”。 打开该列表并确保您的字体包含在该列表中。“

确保字体包含在我们的资源中

演练中的其他内容是相同的东西(将文件添加到您的项目和plist文件中)

所有的信贷与克里斯为这个答案CodeGo.net,这节省了我很多的时间和精力,我只是从他的页面复制一个镜头,让这个答案站在自己的脚,而不是要求你点击链接。

我认为一个开发者有更好的结构作为原始的源代码。 我要离开它复制/粘贴:

 <key>UIAppFonts</key> <array> <string>Roboto-BoldItalic.ttf</string> <string>Roboto-Medium.ttf</string> <string>Roboto-MediumItalic.ttf</string> <string>Roboto-Regular.ttf</string> <string>Roboto-Bold.ttf</string> </array> 

复制这段代码,并将string键修改为你想要的字体。 提示 :要查看plist作为原始源代码,请单击文件上的二级button,然后select打开为 – >源代码

编辑

 // Logs fonts ordered by name for (NSString* family in [[UIFont familyNames] sortedArrayUsingSelector:@selector(compare:)]) { NSLog(@"%@", family); for (NSString* name in [[UIFont fontNamesForFamilyName:family] sortedArrayUsingSelector:@selector(compare:)]) { NSLog(@" %@", name); } } 

添加字体后,可以添加(例如)AppDelegate.m类,以查看真正的字体名称(在包上)。 我遇到过一个问题,那就是我正在用错误的名字加载字体,假设字体文件名是正确的。 有时它与包真实名称不同。 除此之外,您还可以使用查找程序(macOS)上的文件信息窗口(cmd + i)检查文件全名。

举例说明:
File Name =“DroidSansEthiopic-Regular”
在bundle =“Droid Sans Ethiopic”中处理的名字

不要忘记通过转到“目标” – >“构build阶段” – >“复制软件包资源”并手动添加所有字体,将字体添加到目标编译包资源

大多数情况下,我们忘记将字体添加到应用程序目标。 确保你没有忘记这个重要的一步。 注意检查右面板File Inspector>目标成员checkbox。

在这里输入图像说明

你也可以通过在你的应用程序的任何地方运行这个代码片段来检查它的字体是否添加到你的应用程序。

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

编辑

字母顺序:

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

这将填充应用程序中可用字体的列表,您的应用程序中也会显示添加的字体。

在Xamarin iOS中

第1步:首先,您必须将.ttf.otf文件添加到您的项目中。

Roboto-BoldItalic.ttf

步骤2:右键单击字体并select属性

  1. 构build操作 – >内容
  2. 复制到输出目录 – >始终复制

第3步:info.plist

selectFonts provided by application属性Fonts provided by application并添加字体名称。

在这里输入图像说明

步骤4:

在下面以编程方式设置字体

 account.Font = UIFont.FromName("Roboto-BoldItalic", 18f); 

你可以使用[UIFont fontWithName:@"ArialMT" size:14]; 方法直接,如果你想改变你的字体风格。 所有的字体也可能无法在iPhone库中使用。只需参考此可用的字体样式。

如果你有.otf格式。 有时这种格式不起作用。 将.otf格式转换为.ttf。 有一堆字体转换器在线。 如上所述,将自定义字体添加到应用程序提供的字体下的.plist文件中。 确保在您的项目目标下生成阶段 – >复制Bundel资源文件存在。 如果没有,然后添加它。 然后就在你的代码中添加这个[UIFont fontWithName:@“你的自定义字体”的大小:你select的大小];