iOS14及以上SwiftUI中,设置字体和颜色后如何添加字符间距?
SwiftUI iOS14+ 文本字距(kerning/tracking)不生效的解决思路
以下是针对设置字体后kerning/tracking修饰符失效的常见排查和解决方法:
确保修饰符顺序正确
SwiftUI的修饰符应用顺序会影响最终效果,kerning/tracking必须放在font修饰符之后,否则字体设置会覆盖字距配置:// 正确写法 Text("测试文本") .font(.system(size: 24, weight: .medium)) .tracking(3) // 或 .kerning(2) // 错误写法(字距会被字体设置覆盖) Text("测试文本") .tracking(3) .font(.system(size: 24, weight: .medium))排查自定义字体加载问题
如果使用自定义字体,需先确认字体已正确导入项目并配置:- 确保字体文件已添加到项目目标的"Copy Bundle Resources"中
- 在
Info.plist的Fonts provided by application字段添加字体文件名(包含后缀) - 使用正确的字体名称(可通过打印
UIFont.familyNames和对应字体列表确认)
若字体未正确加载,SwiftUI会 fallback到系统字体,可能导致字距设置看起来无效果。
使用AttributedString替代修饰符
若修饰符方式依然无效,可直接通过AttributedString设置字体和字距属性,这种方式更稳定:var customText: AttributedString { var attrStr = AttributedString("自定义字距文本") attrStr.font = .system(size: 20, weight: .bold) attrStr.kern = 2 // 设置字距 // 或使用tracking:attrStr.tracking = 3 return attrStr } // 使用 Text(customText)验证文本内容和测试环境
- 确保文本包含多个字符(单个字符无法体现字距效果)
- 确认测试设备/模拟器的iOS版本≥14(
tracking修饰符仅在iOS14及以上可用)
内容的提问来源于stack exchange,提问作者Hussain Shabbir
相关产品推荐
相关产品推荐

