引言:
看膩了清一色預設的App字型,換一個個人化體驗也是不錯的選擇.
參考:
http://www.16kan.com/post/218270.html
http://blog.csdn.net/frankwun/article/details/7688950
字型在哪?
Mac 有一款內建App叫做字型冊. 開啟這個應用以後,可以看到目前內建在系統中的字型,iOS支援顯示的格式有兩種,分別是otf 和ttf.
首選是otf.
如何配置?
第一步:
將要使用的字型拖動到項目中.
第二步:
在Info.plist中添加Fonts provided by application項,加入一個item值為剛剛添加的字型檔檔案名稱.
如何使用?
使用時要注意,字型檔名稱,並非真正使用時的名稱.
真正的名稱在字型冊的查看某一字型的詳細參數時可以看到.如:
或者根據字型檔在應用中的路徑通過代碼來獲得(不是特別准,可能偶爾需要手動調整):
NSString *fontPath = [[NSBundle mainBundle] pathForResource:fontFileNameArray[i] ofType:nil];NSURL *url = [NSURL fileURLWithPath:fontPath];CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)url);if (fontDataProvider == NULL){ break;}CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);CGDataProviderRelease(fontDataProvider);if (newFont == NULL){ break;}CFStringRef fontName = CGFontCopyFullName(newFont);NSString *fontNameString = (__bridge id)(fontName);if ([fontNameString isEqualToString:@"Yuppy SC Regular"]) { fontNameString = @"YuppySC-Regular";}[fontNameMDic setObject:fontNameString forKey:fontFileNameArray[i]];CFRelease(fontName);CGFontRelease(newFont);
以下代碼可以遍曆出目前在iOS系統中可以使用的字型名稱
NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];NSArray *fontNames;NSInteger indFamily, indFont;for(indFamily=0;indFamily<[familyNames count];++indFamily){ NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]); fontNames =[[NSArray alloc]initWithArray:[UIFont fontNamesForFamilyName:[familyNames objectAtIndex:indFamily]]]; for(indFont=0; indFont<[fontNames count]; ++indFont) { NSLog(@" Font name: %@",[fontNames objectAtIndex:indFont]); }}
總結:
唯一不好處是字型的資料包很佔用App的體積. 這個問題,有待解決.