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?