在位於此處的iOS 7字體列表中,http://support.apple.com/kb/HT5878的底部有一個標題爲「應用程序可以根據需要下載以下字體」的標題。ios應用程序可以根據需要下載以下字體
這是什麼意思? 如何包含這些字體,以及與包含自定義字體有何不同?
在位於此處的iOS 7字體列表中,http://support.apple.com/kb/HT5878的底部有一個標題爲「應用程序可以根據需要下載以下字體」的標題。ios應用程序可以根據需要下載以下字體
這是什麼意思? 如何包含這些字體,以及與包含自定義字體有何不同?
這很有趣,它是一個幾乎沒有記錄的功能,但它似乎可以使用,並且不會讓你的應用程序被拒絕。只是試圖自己研究這件事給我帶來了這個問題,而沒有其他的東西。我能找到的所有文檔都是示例代碼,說明如何使用它:DownloadFont。
演示如何在iOS 6及更高版本上按需下載字體。
在iOS 6上,我們添加了應用程序按需下載字體的功能。除了使用iOS 6安裝的字體外,應用程序還可以根據需要安裝其他字體的列表。
所列出的字體已經被Apple授權用於iOS,但由於額外的磁盤空間使用量,它們未與標準iOS固件捆綁在一起。我認爲這將繼續是蘋果提供新字體的方式(除非操作系統的用戶界面的一部分使用它)。此外,與在Info.plist中使用UIAppFonts
鍵添加字體不同,在下載字體後,它可用於所有應用程序的使用。
下面是一個關於如何異步下載字體並將其設置爲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
看起來像蘋果故意隱藏這些字體:) – kelin