允许用户从 iOS 上的列表中选择新字体

Allowing the user to choose a new font from a list on iOS

我有一个文本字段,我希望用户能够从下拉框中设置字体。我似乎找不到任何与执行此类操作相关的文档,但这似乎应该是相当微不足道的事情,所以我假设我只是使用了糟糕的搜索词或其他东西。

我显然可以自己构建下拉框,但我不知道如何获得所有可用字体的列表,最好包括我自己的自定义字体。

首先获取 familyNames then get all the fonts for the different family names with fontNamesForFamilyName 的字体系列。

显示名称并通过设置所选字体对用户选择作出反应。

您可以像这样创建一个字体数组来填充您的下拉列表:

self.fontNameList = [[NSMutableArray alloc] init];
NSArray *familyNames = [UIFont familyNames];
for (NSString *familyName in familyNames) {
    NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
    for (NSString *fontName in fontNames) {
       [self.fontNameList addObject:fontName];
    }
}
// And optionally, to arrange them in alphabetical order...
[self.fontNameList sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

这应该会找到 所有 您的字体,包括自定义字体和其他字体。

然后假设您在下拉菜单中使用 UITableView,其中每一行都包含一个字体名称,一旦选择了索引,您就可以在 UITableViewDelegate 中设置字体didSelectRowAtIndexPath: 方法如下:

UIFont *currentFont = [UIFont fontWithName:[self.fontNameList objectAtIndex:indexPath.row] size:12];

在这种情况下,我已将大小设置为 12,但您可以将其设置为您想要的任何变量浮点值或默认常量浮点数。