- 用作子视图生成闭包参数的参数属性,允许这些闭包提供多个子视图。
func contextMenu<MenuItems: View>(
@ViewBuilder menuItems: () -> MenuItems
) -> some View
该函数的客户端可以使用多语句闭包来提供多个子视图,如下例所示:
myView.contextMenu {
Text("Cut")
Text("Copy")
Text("Paste")
if isSymbol {
Text("Jump to Definition")
}
}
- 如果一个function或是声明的一个子view里面返回的一个子视图,@ViewBuilder可以不写。
这个结论不确定,有搞清楚的可以留言评论。
struct ContentView1: View {
var body: some View {
VStack{
label
makeLabel()
}
}
var label: some View{
Label("Label", systemImage: "questionmark.circle")
}
func makeLabel() -> some View {
Label("Label", systemImage: "questionmark.circle")
}
}