如果用fontWithName:的话,后面的参数不能加.ttf
使用自定义字体的实现
获取一下系统中所有自带字体
很简单,就当先抛个砖头了
NSArray *fonts = [UIFont familyNames];
for (NSString *font in fonts) {
NSLog(@"%@",font);
}
方法一
简单的直接引用,这里我找了 华文行楷(我最喜欢的字体)的字体来做例子。
步骤一
直接将字体文件拖入我们的项目中
步骤一
步骤二
在Info.plist文件中添加 Fonts provided by application ,这是一个数组类型,将字体文件名添加到item中
步骤二
这里需要注意的是添加字体文件名的时候记得把后缀名带上
步骤三
添加字体文件 TARGETS -> Build Phases -> Copy Bundle Resources
步骤三
步骤四
使用代码来使用字体,使用了方法+ (nullable UIFont *)fontWithName:(NSString *)fontName size:(CGFloat)fontSize;
这里需要注意的是这里的fontName不能写 华文行楷,应为这仅仅是字体的文件名,而不是字体名,那么如何获取字体名呐?其实很简单,我们只需要在MacOS下双击字体文件,就可以看到字体名了。
步骤四
customLabel.font = [UIFont fontWithName:@"STXingkai" size:20];
这样就搞定了。
方法二
步骤一二三都和方法一是一样的,只不过步骤四我们可以使用代码来获取字体名
- (UIFont *)customFont
{
NSString *fontPath = [[NSBundle mainBundle]pathForResource:@"华文行楷" ofType:@"ttf"];
NSURL *fontURL = [NSURL fileURLWithPath:fontPath];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)fontURL);
CGFontRef fontRef = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
NSString *fontName = (__bridge NSString *)CGFontCopyFullName(fontRef);
UIFont *font = [UIFont fontWithName:fontName size:20];
CGFontRelease(fontRef);
return font;
}
设置字体
customLabel.font = [self customFont];