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


当前回答

编辑:从iOS 3.2开始,这个功能是内置的。如果您需要支持3.2版本,您仍然可以使用这个解决方案。

我创建了一个扩展UILabel并处理加载.ttf文件的简单模块。我在Apache许可下发布了它,并把它放在github这里。

重要的文件是FontLabel.h和FontLabel.m。

它使用了Genericrich回答中的一些代码。

在这里浏览源代码。

OR

复制您的字体文件到资源 为你的信息添加一个键。名为UIAppFonts的plist文件。("应用程序提供的字体) 将该键设置为数组 对于你拥有的每种字体,输入字体文件的全名(包括扩展名)作为UIAppFonts数组的项 保存Info.plist 现在在你的应用程序中,你可以简单地调用[UIFont fontWithName:@"CustomFontName" size:15]来获得自定义字体来使用你的UILabels和UITextViews等…

更多信息

其他回答

在你现有的iOS应用程序上添加一个新的字体是非常容易的。

你只需要添加字体,如font.ttf到你的资源文件夹。

打开应用程序info.plist。添加一个新行作为“Fonts provided by application”,并输入字体名称为font.ttf。

设置字体时执行setFont:"相应字体名称"

你可以通过NSArray *check = [UIFont familyNames];来检查你的字体是否被添加。

它返回应用程序支持的所有字体。

iOS 3.2及后续版本支持此功能。直接摘自iPhone OS 3.2新增功能文档:

自定义字体支持 想要使用自定义字体的应用程序现在可以将这些字体包含在他们的应用程序包中,并通过在他们的信息中包含UIAppFonts键向系统注册这些字体。plist文件。该键的值是一个字符串数组,用于标识应用程序bundle中的字体文件。当系统看到键时,它加载指定的字体并使它们对应用程序可用。

一旦字体设置在信息。plist,您可以使用您的自定义字体作为任何其他字体在IB或编程。

苹果开发者论坛上有一个正在进行的话题: https://devforums.apple.com/thread/37824(需要登录)

这里有一个优秀而简单的三步教程,教你如何做到这一点(断开的链接被删除)

将您的自定义字体文件添加到您的项目中,使用Xcode作为资源 为你的信息添加一个键。名为UIAppFonts的plist文件。 将该键设置为数组 对于你拥有的每种字体,输入字体文件的全名(包括扩展名)作为UIAppFonts数组的项 保存Info.plist 现在在你的应用程序中,你可以简单地调用[UIFont fontWithName:@"CustomFontName" size:12]来获得自定义字体来使用你的UILabels和UITextViews等…

另外:确保字体在复制包资源中。

是的,你可以在你的应用程序中使用自定义字体

按照下面的步骤:

将自定义字体文件添加到项目的支持文件中

为你的信息添加一个键。名为UIAppFonts的plist文件。

将该键设置为数组

对于你拥有的每种字体,输入字体文件的全名(包括扩展名)作为UIAppFonts数组的项

保存信息。plist现在在你的应用程序中,你可以简单地调用[UIFont fontWithName:@"你的自定义字体名称"大小:20]来获得与你的UILabels使用的自定义字体 应用后,如果你没有得到正确的字体,然后双击自定义字体,仔细看顶部字体名称是来的,复制这个字体,粘贴,在这里[UIFont fontWithName:@"这里过去你的自定义字体名称"大小:20]

我希望你能得到正确答案

在信息。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]];

编辑:从iOS 3.2开始,这个功能是内置的。如果您需要支持3.2版本,您仍然可以使用这个解决方案。

我创建了一个扩展UILabel并处理加载.ttf文件的简单模块。我在Apache许可下发布了它,并把它放在github这里。

重要的文件是FontLabel.h和FontLabel.m。

它使用了Genericrich回答中的一些代码。

在这里浏览源代码。

OR

复制您的字体文件到资源 为你的信息添加一个键。名为UIAppFonts的plist文件。("应用程序提供的字体) 将该键设置为数组 对于你拥有的每种字体,输入字体文件的全名(包括扩展名)作为UIAppFonts数组的项 保存Info.plist 现在在你的应用程序中,你可以简单地调用[UIFont fontWithName:@"CustomFontName" size:15]来获得自定义字体来使用你的UILabels和UITextViews等…

更多信息