引言:
看腻了清一色默认的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的体积. 这个问题,有待解决.