Swiftui 从视图修改器中修改视图
我有一个HighlightedText视图,它由一个字符串、一个默认字体和一个高亮字体初始化。字符串可以有标记来指示需要突出显示的部分。一切正常。现在,我不想用默认字体和突出显示字体来初始化它,而是希望能够以更快捷的ui方式编写它,以实现更大的灵活性和更好的准备。因此,我希望能够做到以下几点:Swiftui 从视图修改器中修改视图,swiftui,Swiftui,我有一个HighlightedText视图,它由一个字符串、一个默认字体和一个高亮字体初始化。字符串可以有标记来指示需要突出显示的部分。一切正常。现在,我不想用默认字体和突出显示字体来初始化它,而是希望能够以更快捷的ui方式编写它,以实现更大的灵活性和更好的准备。因此,我希望能够做到以下几点: HighlightedText("My text <highlighted>") .defaultFont(.body) .highlightFont(.title) 然而,这是
HighlightedText("My text <highlighted>")
.defaultFont(.body)
.highlightFont(.title)
然而,这是行不通的。我传递的默认字体永远不会应用。以下是可能的解决方案: 如果你有类似的声明
struct HighlightedText: View {
var defaultFount = Font.body
var highlightedFont = Font.headline
// ... other code
然后您的自定义修改器可以是
extension HighlightedText {
func defaultFont(_ font: Font) -> Self {
var view = self
view.defaultFount = font
return view
}
func highlightedFont(_ font: Font) -> Self {
var view = self
view.highlightedFont = font
return view
}
}
谢谢在进行更改之前,我没有将视图声明为变量。另一件事是,无论如何,我可以这样做,但取而代之的是一个ViewModifier?因为我正在处理高亮显示的文本类型,所以我只能在创建此组件之后,在调用任何其他修饰符之前调用这些函数,否则我会松开该类型,然后无法调用这些方法。
extension HighlightedText {
func defaultFont(_ font: Font) -> Self {
var view = self
view.defaultFount = font
return view
}
func highlightedFont(_ font: Font) -> Self {
var view = self
view.highlightedFont = font
return view
}
}