2013-09-01 39 views
1

我在Xcode app-info.plist的iOS應用程序中添加了一些自定義的真正的字體(使用「應用程序提供的字體」鍵)。如何獲取iOS應用中捆綁的字體名稱?

iOS自動將它們識別爲應用程序中的可用字體,我可以使用[UIFont familyNames]獲取所有字體系列的名稱,包括iOS提供的系統字體。

但我想知道哪些字體來自iOS系統字體,哪些字體來自我在該包中添加的自定義字體。

是否有任何編程方式來區分系統字體的捆綁字體或只是一種獲取所有捆綁字體名稱的方式?

回答

2

這是從another answer blatently撕掉它應該爲您提供您的捆綁字體的所有字體名稱。

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary]; 
NSArray* fontFiles = [infoDict objectForKey:@"UIAppFonts"]; 

for (NSString *fontFile in fontFiles) { 
    NSLog(@"file name: %@", fontFile); 
    NSURL *url = [[NSBundle mainBundle] URLForResource:fontFile withExtension:NULL]; 
    NSData *fontData = [NSData dataWithContentsOfURL:url]; 
    CGDataProviderRef fontDataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)fontData); 
    CGFontRef loadedFont = CGFontCreateWithDataProvider(fontDataProvider); 
    NSString *fullName = CFBridgingRelease(CGFontCopyFullName(loadedFont)); 
    CGFontRelease(loadedFont); 
    CGDataProviderRelease(fontDataProvider); 
    NSLog(@"font name: %@", fullName); 
} 

這個答案會讓你正確的字體的名字,但如果你只是從信息的plist想要的字體名稱:

NSDictionary* infoDict = [[NSBundle mainBundle] infoDictionary]; 
NSArray *arrayOfFontStringNames = infoDict[@"UIAppFonts"]; 
+0

謝謝,但我應該真正重新創建捆綁字體文件只是爲了獲得名稱?有沒有更有效的方法,以防我有很多這樣的情況? – atisman

+0

簡化將只是獲取字體名稱的數組。 –

+0

建議的簡化不會檢索字體名稱,而是字體文件名稱。但我會接受原來的答案,因爲目前看起來沒有別的辦法。 – atisman

相關問題