如何使用SwiftUI中的扩展向文本视图添加辅助功能修改器

如何使用SwiftUI中的扩展向文本视图添加辅助功能修改器,swiftui,Swiftui,我不知道。这是我写的。我知道这是徒劳的尝试 struct HelloWorld: View { var body: some View { Text("Hello, World!") } } extension Text { self.accessibility(hidden: true) } 但是我得到了这个错误 更新: 是的,我想我可以在扩展中添加一个函数或实现一个结构。但我只希望文本视图自动继承可访问性修改器 所以我可以这样使用它: var body: some

我不知道。这是我写的。我知道这是徒劳的尝试

struct HelloWorld: View {
  var body: some View {
    Text("Hello, World!")
  }
}

extension Text {
  self.accessibility(hidden: true)
}
但是我得到了这个错误

更新: 是的,我想我可以在扩展中添加一个函数或实现一个结构。但我只希望文本视图自动继承可访问性修改器

所以我可以这样使用它:

var body: some View {
    Text("Hello, World!")
  }
这是@Asperi的结构实现

  //thanks for your answer Asperi, but

  let sayHi = "hi"

  var body: some View {
    List {
      Section(header: HidingAccessibility {Text(self.sayHi)}) {
        Text("Hello, World!")
      }
    }
  }
}

struct HidingAccessibility<Content: View>: View {
  private var content: () -> Content
  init(@ViewBuilder _ content: @escaping () -> Content ) {
    self.content = content
  }

  var body: some View {
    content().accessibility(hidden: true)
  }
}
//谢谢你的回答Asperi,但是
让我们说“嗨”
var body:一些观点{
名单{
节(标题:隐藏可访问性{Text(self.sayHi)}){
文本(“你好,世界!”)
}
}
}
}
结构隐藏可访问性:视图{
私有变量内容:()->内容
init(@ViewBuilder\ucontent:@escaping()->content){
self.content=内容
}
var body:一些观点{
content().可访问性(隐藏:true)
}
}
在这里

struct HelloWorld: View {
  var body: some View {
    Text("Hello, World!")
       .hideAccessibility()     // << here !
  }
}

extension Text {
  public func hideAccessibility() -> some View {   // << here !
     self.accessibility(hidden: true)
  }
}
struct HelloWorld:View{
var body:一些观点{
文本(“你好,世界!”)
.hideAccessibility()//某些视图{//内容
init(@ViewBuilder\ucontent:@escaping()->content){
self.content=内容
}
var body:一些观点{
content().可访问性(隐藏:true)
}
}
结构HelloWorld:视图{
var body:一些观点{
隐藏可访问性{

文本(“你好,世界!”)//我希望文本视图继承修饰符。请查看我的更新。您可以使用第一种变体的答案作为
标题:
,第二种变体用于您希望禁用整个
列表的可访问性时。是的,我会到处都有self,但我听说Swift正在摆脱self在下一次更新中。
struct HidingAccessibility<Content: View>: View {
    private var content: () -> Content
    init(@ViewBuilder _ content: @escaping () -> Content ) {
        self.content = content
    }

    var body: some View {
        content().accessibility(hidden: true)
    }
}

struct HelloWorld: View { 
  var body: some View {
    HidingAccessibility {
        Text("Hello, World!") // << usual SwiftUI view building here
    }
  }
}