ios使用自定义中文字体

如果用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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容