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

SwiftUI如何使用ViewModifier同时设置Text的字体与tracking字间距

解决方案

你遇到的核心问题是自定义的Text.font(_:)扩展返回了some View类型,把原本的Text类型做了类型擦除,自然无法调用仅Text支持的tracking方法,完全不需要强行套ViewModifier,直接在Text扩展里实现统一配置即可,而且返回值保留Text类型,后续还能继续链式调用其他Text专属方法。


实现代码

  1. 先补全之前位置错误的Font自定义字体构造方法:
extension Font {
    static func custom(font: MyFonts) -> Font {
        Font(font.font as CTFont)
    }
}
  1. 写Text的统一配置扩展,同时设置字体和字间距:
extension Text {
    /// 统一设置自定义字体+对应字间距,返回Text类型支持后续链式调用
    func applyCustomFont(_ font: Font.MyFonts) -> Self {
        self
            .tracking(font.tracking)
            .font(.custom(font: font))
    }
}

使用方式

直接对Text调用即可一步完成两项配置:

Text("示例文本")
    .applyCustomFont(.huge)

补充说明

你之前贴的Font.MyFonts枚举里.large的case代码少了右括号,建议修正:

case .large: font = UIFont(name: AppFontName.book, size: 28)

内容的提问来源于stack exchange,提问作者Giovanni Palusa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:15:06