【问题标题】:SwiftUI ViewModifier - add kerningSwiftUI ViewModifier - 添加字距调整
【发布时间】: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)

标签: swift swiftui viewmodifier


【解决方案1】:

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

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

【讨论】:

  • 完美,就像一个魅力,非常感谢!刚刚意识到我不能将其标记为已回答,没有足够的声誉这样做,抱歉。我一赚到就会回复并相应地标记问题。干杯@Asperi
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多