如何在iOS应用程序中为不同语言使用不同的字体?

saj*_*ong 11 fonts localization ios uiappfonts

我想在iOS应用程序中为不同的语言使用不同的字体.

起初,我想过使用.ttf文件的本地化版本.我尝试在本地化项目文件夹中为不同语言添加本地化的.ttf文件,并在其中安装相同的文件名和字体名称.它没用.

然后,我查看了InfoPlist.strings文件中的不同语言.在我看来,它是主Info.plist中找到的'key'字符串的键值组合.我找到了关键字'UIAppFonts'的字体条目,这是一个数组.我无法弄清楚如何将InfoPlist.strings中的本地化字体文件名作为数组.

作为最后的手段,我想在Localizable.stings文件中添加本地化的字体名称,以根据当前的语言环境选择字体名称,并在我使用字体的任何地方替换项目中的所有实例.(显然这很麻烦).喜欢:

UIFont *font = [UIFont fontWithName:NSLocalizedString(@"font-name", nil) size:16];
Run Code Online (Sandbox Code Playgroud)

如果有人以前这样做,请提供帮助.如果可以实现前两个想法中的一个,那将是很好的.

Mic*_*gan 0

使用 UIAppFonts,您走在正确的道路上。首先,将 .ttf 文件添加到项目的 Resources 文件夹下。然后,您需要向 Info.plist 添加新行(不是 InfoPlist.strings?)。您可以通过单击 plist 中最后一行最右侧的加号 (+) 来完成此操作,或者我认为您可以按住 Control 键单击任何其他属性并选择“新建”。从第一列的下拉列表中选择 UIAppFonts,它的左侧应该会出现一个箭头 (>)。单击此箭头展开属性,您应该看到 item0,在其中输入 .ttf 文件的名称。按住 Control 键单击可根据需要添加更多项目。

这会将您的自定义字体添加到应用程序中。需要注意的是,当您使用 fontWithName 加载它们时,您在 @"font-name" 中提供的名称可能不(通常不是)与 .ttf 文件的名称完全相同。相反,它是出现在字体册中预览 --> 显示字体信息下的完整名称。

所有这些都很好,但它没有本地化任何东西。您可以使用类似下面的行来查询语言代码,然后根据该代码决定要加载的字体:

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)