You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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))
    
  • 排查自定义字体加载问题
    如果使用自定义字体,需先确认字体已正确导入项目并配置:

    1. 确保字体文件已添加到项目目标的"Copy Bundle Resources"中
    2. 在Info.plist的Fonts provided by application字段添加字体文件名(包含后缀)
    3. 使用正确的字体名称(可通过打印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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 02:50:39