【发布时间】:2015-02-28 03:42:21
【问题描述】:
我有一个文本字段,我希望用户能够从下拉框中设置字体。我似乎找不到任何与执行此类操作相关的文档,但它似乎应该是相当微不足道的,所以我假设我只是使用了糟糕的搜索词或其他东西。
我显然可以自己构建下拉框,但我不知道如何获取所有可用字体的列表,其中包括我自己的自定义字体。
【问题讨论】:
-
我不知道为什么我的回答被否决了,但我绝对建议你去看看。
我有一个文本字段,我希望用户能够从下拉框中设置字体。我似乎找不到任何与执行此类操作相关的文档,但它似乎应该是相当微不足道的,所以我假设我只是使用了糟糕的搜索词或其他东西。
我显然可以自己构建下拉框,但我不知道如何获取所有可用字体的列表,其中包括我自己的自定义字体。
【问题讨论】:
您可以创建一个字体数组来填充您的下拉列表,如下所示:
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,但您可以将其设置为您想要的任何可变浮点值或默认常量浮点。
【讨论】:
先用familyNames获取字体系列,然后用fontNamesForFamilyName获取不同系列名称的所有字体。
显示名称并通过设置所选字体对用户的选择做出反应。
【讨论】: