SwiftUI ViewModifier - 添加字距调整

Posted

技术标签:

【中文标题】SwiftUI ViewModifier - 添加字距调整【英文标题】:SwiftUI ViewModifier - add kerning 【发布时间】:2019-12-16 12:50:57 【问题描述】:

有没有办法构建一个应用自定义字体和 fontSize 的视图修改器,如下面的工作示例,并且在同一个修改器中也可以添加字距调整?

struct labelTextModifier: ViewModifier 
    var fontSize: CGFloat

    func body(content: Content) -> some View 
        content
            .font(.custom(Constants.defaultLabelFontSFProDisplayThin, size: fontSize))
    


extension View    
    func applyLabelFont(size: CGFloat) -> some View 
        return self.modifier(labelTextModifier(fontSize: size))
    

上面的效果很好,但是我不知道如何向修饰符添加字距调整

试过了

content
    .kerning(4)

,但是没有用。

建议?

【问题讨论】:

.kerning 是纯文本修饰符(与 .font 相反),您不能将其与通用 ViewModifier 一起使用。 @Asperi,感谢您的回答!所以唯一的方法就是将它应用到视图中的每个文本上,而不是使用通用的 ViewModifier,对吗? 对。使用您的自定义修饰符就像Text("test").kerning(4).applyLabelFont(14.0) 【参考方案1】:

替代方法是使用纯文本修饰符,如

extension Text    
    func applyLabelFont(size: CGFloat, kerning: CGFloat = 4) -> Text 
        self
          .font(.custom(Constants.defaultLabelFontSFProDisplayThin, size: size))
          .kerning(kerning)
    

【讨论】:

完美,就像一个魅力,非常感谢!刚刚意识到我不能将其标记为已回答,没有足够的声誉这样做,抱歉。我一赚到就会回复并相应地标记问题。干杯@Asperi

以上是关于SwiftUI ViewModifier - 添加字距调整的主要内容,如果未能解决你的问题,请参考以下文章

用 SwiftUI ViewModifier 自定义弹窗

用 SwiftUI ViewModifier 自定义弹窗

用 SwiftUI ViewModifier 自定义弹窗

SwiftUI:自定义视图修饰符不符合 ViewModifier?

Swiftui Scrollview Viewmodifier 适用于所有 Scrollview

如何制作一个接受任何对象的 swiftui viewmodifier?