我有一个HighlightedText视图,该视图用字符串,默认字体和突出显示字体初始化。该字符串可以具有标记,以指示需要突出显示它的哪些部分。一切正常。现在,我不希望使用默认字体和突出显示字体对其进行初始化,而是希望能够以更快速的UI方式编写此代码,以提供更大的灵活性并提高就绪性。因此,我希望能够执行以下操作:
HighlightedText("My text <highlighted>")
.defaultFont(.body)
.highlightFont(.title)
我知道标准方法应该使用ViewModifier,但是我从其body函数中获得的只是Content类型,似乎没有一种方法可以将其转换为HighlightedText视图并根据需要进行配置。我似乎只能从View主体中执行所有操作,只是从View协议调用其他修饰符,但这对我的用例而言还不够。
我尝试了此扩展,其中defaultFont是HighlightedText中定义的文件私有@State属性:
extension HighlightedText {
func defaultFont(_ font: Font) -> some View {
defaultFont.font = font
return body
}
}
但是,这不起作用。我经过的默认字体永远不会应用。
答案 0 :(得分:1)
这是可能的解决方案:
如果您有类似
的声明refresh_token
然后您的自定义修饰符可以为
struct HighlightedText: View {
var defaultFount = Font.body
var highlightedFont = Font.headline
// ... other code