如何在Storyboard中同时实现Button字号修改与圆角生效?
问题原因
系统自带的「gray」样式按钮,其字体由系统动态配置管控,Storyboard中直接设置的字号会被系统样式覆盖,导致真机上不生效;而「default」样式按钮没有强制的系统字体约束,字号设置可正常生效,但默认不带圆角。
Storyboard内实现方案
方案一:使用default样式+运行时属性设置圆角
- 在Storyboard选中目标按钮,切换到属性检查器(Attributes Inspector),将样式设为
default,直接设置需要的字号(此时真机可正常生效)。 - 切换到身份检查器(Identity Inspector),找到「User Defined Runtime Attributes」模块:
- 点击「+」添加属性:
Key Path填layer.cornerRadius,Type选Number,输入目标圆角值(如8)。 - 再添加一个属性:
Key Path填layer.masksToBounds,Type选Boolean,勾选YES(确保按钮内容被圆角裁剪,否则圆角可能不显示)。
- 点击「+」添加属性:
方案二:自定义Button类(兼容Storyboard配置)
如果需要复用带圆角的按钮,可自定义子类:
- 新建一个UIButton子类,代码示例:
import UIKit class RoundedButton: UIButton { override func awakeFromNib() { super.awakeFromNib() // 设置圆角,可根据需求调整数值 layer.cornerRadius = 8 layer.masksToBounds = true } } - 在Storyboard选中按钮,切换到身份检查器,将「Custom Class」设为
RoundedButton,样式选default并设置字号,真机即可同时生效字号与圆角。
补充说明
若坚持使用「gray」样式,需通过代码修改按钮的configuration来设置字体,但无法完全在Storyboard内完成配置,不如上述方案直接。
内容的提问来源于stack exchange,提问作者stackunderflow
相关产品推荐
相关产品推荐

