在Xcode 6中为不同iPhone设备设置不同字体大小
如何在通用故事板中根据iPhone设备调整字体大小
这个问题我之前帮不少开发者解决过,在通用故事板里实现不同iPhone设备的字体差异化,有几个实用的方法,我给你拆解一下:
方法1:利用Size Classes可视化配置(推荐)
苹果的Size Classes就是为适配不同屏幕尺寸设计的,正好能用来设置不同设备的字体大小:
- 打开故事板,选中你要调整的
UILabel - 切换到Attributes Inspector(右侧面板),找到「Font」选项,点击字体大小旁边的
+按钮 - 在弹出的size class选择器里,选择对应的尺寸类:
- 针对iPhone 5s这类小屏设备(竖屏时是
Compact Width + Compact Height),设置字体大小为15 - 针对iPhone 6s Plus这类大屏设备(竖屏时是
Regular Width + Compact Height),设置字体大小为17
- 针对iPhone 5s这类小屏设备(竖屏时是
- 设置完成后,故事板会自动根据设备的size class应用对应的字体大小,不需要写额外代码
方法2:代码动态设置(灵活度更高)
如果需要更精细的控制,或者要适配更多设备型号,用代码判断屏幕尺寸来设置字体是个不错的选择:
override func viewDidLoad() { super.viewDidLoad() let screenHeight = UIScreen.main.bounds.height switch screenHeight { case 568: // iPhone 5/5s/SE(1st gen) yourLabel.font = UIFont.systemFont(ofSize: 15) case 736: // iPhone 6s Plus/7 Plus/8 Plus yourLabel.font = UIFont.systemFont(ofSize: 17) case 812, 844, 896: // iPhone X/XS/XR/XS Max/11/12系列等 yourLabel.font = UIFont.systemFont(ofSize: 16) // 可以根据需求调整中间值 default: yourLabel.font = UIFont.systemFont(ofSize: 16) } }
注意:尽量用屏幕尺寸而不是硬编码设备型号,避免新设备发布后需要修改代码
方法3:结合动态类型(适配用户偏好)
如果想同时兼顾系统的动态类型功能(用户可以在设置里调整字体大小),可以自定义字体大小的缩放规则:
- 先在故事板里开启
UILabel的「Adjust Fonts for Dynamic Type」 - 然后在代码里设置自定义的字体缩放系数,或者根据用户的字体偏好和设备尺寸综合调整
补充:字体自动缩放(基于标签宽度)
如果你的标签宽度是和屏幕宽度绑定的,也可以让字体根据标签宽度自动缩放:
- 在Attributes Inspector里,勾选「Adjusts Font Size To Fit Width」
- 设置「Minimum Scale Factor」(比如0.8),这样字体最小会缩小到原大小的80%来适配标签宽度
内容的提问来源于stack exchange,提问作者Rajeswari M




