从视图修改器中修改视图

时间:2020-05-10 04:10:50

标签: swiftui

我有一个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
    }
}

但是,这不起作用。我经过的默认字体永远不会应用。

1 个答案:

答案 0 :(得分:1)

这是可能的解决方案:

如果您有类似

的声明
refresh_token

然后您的自定义修饰符可以为

struct HighlightedText: View {
    var defaultFount = Font.body
    var highlightedFont = Font.headline

    // ... other code