在位于此处的 iOS 7 字体列表http://support.apple.com/kb/HT5878的底部有一个标题为“应用程序可以在必要时下载以下字体”的部分。
这是什么意思?如何包含这些字体,这与包含自定义字体有何不同?
在位于此处的 iOS 7 字体列表http://support.apple.com/kb/HT5878的底部有一个标题为“应用程序可以在必要时下载以下字体”的部分。
这是什么意思?如何包含这些字体,这与包含自定义字体有何不同?
这很有趣,这是一个几乎没有记录的功能,但它似乎可以使用并且不会让您的应用程序被拒绝。只是试图自己研究这个让我想到了这个问题,而不是别的。我能找到的所有文档都是显示如何使用它的示例代码:DownloadFont。
演示如何在 iOS 6 及更高版本上按需下载字体。
在 iOS 6 上,我们添加了应用程序按需下载字体的功能。除了随 iOS 6 安装的字体外,应用程序还可以根据需要安装附加字体列表。
列出的字体已获得 Apple 的许可,可在 iOS 中使用,但由于占用了额外的磁盘空间,它们并未与标准 iOS 固件捆绑在一起。我认为这将继续是 Apple 提供新字体的方式(除非操作系统 UI 的一部分使用它)。此外,与使用UIAppFonts
Info.plist 中的键添加字体不同,下载字体后,它可供所有应用程序使用。
这是一个关于如何异步下载字体并将其设置为UITextView
.
- (void)asynchronouslySetFontName:(NSString *)fontName toTextView:(UITextView *)textView {
CGFloat size = 24.0f;
UIFont *font = [UIFont fontWithName:fontName size:size];
if (font && ([font.fontName compare:fontName] == NSOrderedSame || [font.familyName compare:fontName] == NSOrderedSame)) {
textView.font = font;
return;
}
NSMutableDictionary *attrs = [NSMutableDictionary dictionaryWithObject:fontName forKey:kCTFontNameAttribute];
CTFontDescriptorRef desc = CTFontDescriptorCreateWithAttributes((__bridge CFDictionaryRef)attrs);
NSMutableArray *descs = [NSMutableArray array];
[descs addObject:(__bridge id)desc];
CFRelease(desc);
__weak UITextView *weakTextView = textView;
CTFontDescriptorMatchFontDescriptorsWithProgressHandler((__bridge CFArrayRef)descs, NULL, ^(CTFontDescriptorMatchingState state, CFDictionaryRef progressParameter) {
if (state == kCTFontDescriptorMatchingDidFinish) {
dispatch_async(dispatch_get_main_queue(), ^{
weakTextView.font = [UIFont fontWithName:fontName size:size];
});
}
return YES;
});
}
这是所有可下载字体的列表。http://iosfontlist.com