SwiftUI如何使用ViewModifier同时设置Text的字体与tracking字间距
解决方案
你遇到的核心问题是自定义的Text.font(_:)扩展返回了some View类型,把原本的Text类型做了类型擦除,自然无法调用仅Text支持的tracking方法,完全不需要强行套ViewModifier,直接在Text扩展里实现统一配置即可,而且返回值保留Text类型,后续还能继续链式调用其他Text专属方法。
实现代码
- 先补全之前位置错误的
Font自定义字体构造方法:
extension Font { static func custom(font: MyFonts) -> Font { Font(font.font as CTFont) } }
- 写
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
相关产品推荐
相关产品推荐

