前段时间的开发中遇到了一个十分奇葩的问题,在 APP 的某个页面需要设置 楷体_GB2312 字体时,APP 显示出来的却是系统默认的苹方字体,设置字体的代码如下:
UILabel *label = [[UILabel alloc]init];
label.font = [UIFont fontWithName:@"KaiTi_GB2312" size:12];
检查过字体 .ttf 文件导入正确,试过数个字体文件,包括在工程的Info.plist文件中添加的 Fonts provided by application 等均操作无误,字体依然显示系统默认字体.
在遍历查询字体名称时,发现字体库中并没有"KaiTi_GB2312"这一字体名.也就是说虽然添加了字体文件,设置了Info.plist, 字体却没有被添加进字体库中.但是在 .xib 文件中却可以选择使用该字体并能正常显示.
先说解决方法:
在项目中新建一个 .xib 文件,在 .xib 文件中使用自定义字体,并确保在编译时该 .xib 文件被编译,然后自定义字体就能够正常显示啦!
问题分析:
这个问题困扰了博主长达半个月之久,在求助于各路技术大牛,并经过多次试验后,博主斗胆对该问题进行如下分析:
可能是由于苹果公司为了提升编译效率,或出于支持 xib 技术等原因,在工程中无 xib 文件被编译时, xib 文件中的字体不被添加进字体库中.而 xib 文件被编译后, xib 文件中的字体才会被添加进字体库中.
由于该问题有很强的迷惑性,博主在重现该问题时也经历了多次失败,首先要确保项目中没有任何被编译的 .xib 文件,其次字体要正确添加无误.
博主把踩过的坑写出来,就算不知道为啥这里会有坑,但至少告诉大家跳出这个坑的方法.
祝各位工作顺利,天下无坑.