自定义字体搭配Size Class无法按屏幕尺寸调整问题求助
解决Xcode7中自定义字体结合Size Class不生效的问题
嘿,我之前在Xcode7里也踩过一模一样的坑,自定义字体在Size Class下死活不跟着屏幕尺寸变字号,折腾了好一阵才搞定。下面一步步帮你排查解决:
第一步:先确认自定义字体的导入完全正确
这是最容易忽略的基础坑,很多时候字号不生效根本不是Size Class的问题,是字体压根没被正确加载:
- 拖字体文件(.ttf/.otf)进Xcode时,一定要勾选Copy items if needed,并且确保你的Target在「Add to targets」里被选中。
- 去Target的
Build Phases->Copy Bundle Resources里检查,你的字体文件必须在列表里,没有的话手动加进去。 - 打开
Info.plist,添加Fonts provided by application(也就是UIAppFonts)数组,把字体的完整文件名(包括后缀,比如MyCustomFont-Regular.ttf)加进去。 - 验证字体是否能被识别:在ViewController的
viewDidLoad里加一行代码打印字体家族:
运行后在控制台找你的字体家族名(比如文件名是print(UIFont.familyNames())MyCustomFont-Regular.ttf,家族名可能是MyCustomFont),这一步很关键——Storyboard里选字体时必须选对这个家族名,别选错成系统字体了。
第二步:正确用Size Class设置自定义字体字号
字体加载没问题后,就可以在Storyboard里配置不同Size Class的字号了:
- 选中你要设置的Label(或其他文本控件),打开Attributes Inspector。
- 先在默认的Size Class(比如Compact Width/Any Height,对应iPhone竖屏)下,选对自定义字体的家族和样式(比如Regular),设置好适合iPhone的字号。
- 点击字号输入框旁边的
+号,添加新的Size Class配置:- 比如要给iPad设置更大的字号,就选择
Regular Width | Regular Height(对应iPad横竖屏),然后修改字号为更大的数值。 - 注意:不要在新的Size Class下重新选择字体,只需要修改字号就行!如果重新选字体,会覆盖全局的字体设置,导致其他Size Class下的字体变回系统字体。
- 比如要给iPad设置更大的字号,就选择
- 用Storyboard的预览功能(右下角的「Preview」按钮)切换iPhone和iPad预览,确认字号是否变化。
第三步:解决Xcode7的缓存问题
Xcode7的缓存有时候会抽风,导致字体或Size Class的设置不生效:
- 先执行
Product->Clean Build Folder(按住Option键点Product就能看到这个选项)。 - 然后重启Xcode,再重新运行项目。
额外排查点
如果还是没生效,检查这几点:
- 控件的
Font属性是不是被设置成了System Font?一定要确保是你导入的自定义字体。 - 是不是选错了Size Class?比如iPhone横屏(除了6+)是
Compact Width | Compact Height,如果要适配横屏,别忘了给这个Size Class也设置字号。
内容的提问来源于stack exchange,提问作者xeb
相关产品推荐
相关产品推荐

