【发布时间】:2020-05-10 04:10:50
【问题描述】:
我有一个 HighlightedText 视图,它用一个字符串、一个默认字体和一个高亮字体初始化。字符串可以有标记来指示它的哪些部分需要突出显示。这一切都很好。现在,我不想用默认字体和高亮字体初始化它,而是希望能够以更 swift-ui 的方式编写它,以提供更大的灵活性并提高准备度。所以我希望能够做这样的事情:
HighlightedText("My text <highlighted>")
.defaultFont(.body)
.highlightFont(.title)
我知道标准方式应该是使用 ViewModifier,但是我从它的主体函数中得到的只是一个内容类型,似乎没有办法可以将它转换为我的 HighlightedText 视图并根据需要进行配置.我似乎能够从它的主体中做的只是从 View 协议中调用其他修饰符,但这对于我的用例来说还不够。
我已经尝试过这个扩展,其中 defaultFont 是在 HighlightedText 中定义的文件私有 @State 属性:
extension HighlightedText {
func defaultFont(_ font: Font) -> some View {
defaultFont.font = font
return body
}
}
但是,这不起作用。我传递的默认字体永远不会被应用。
【问题讨论】:
标签: swiftui