ViewBuilder

一个自定义参数属性,用于从闭包构造视图。

struct ViewBuilder

总览

您通常将其用作产生子视图的闭合参数的参数属性,从而允许这些闭合提供多个子视图。例如,以下函数接受通过视图构建器生成一个或多个视图的闭包。

func contextMenu<MenuItems : View>(
    @ViewBuilder menuItems: () -> MenuItems
) -> some View

此功能的客户端可以使用多语句闭包来提供多个子视图,如以下示例所示:

myView.contextMenu {
    Text("Cut")
    Text("Copy")
    Text("Paste")
    if isSymbol {
        Text("Jump to Definition")
    }
}


主题

建筑模块

1、static func buildBlock() -> EmptyView

从不包含任何语句的块构建一个空视图。

2、static func buildBlock<Content>(Content) -> Content

将未经修改的单个视图传递为子视图。

3、static func buildBlock<C0, C1>(C0, C1) -> TupleView<(C0, C1)>
4、static func buildBlock<C0, C1, C2>(C0, C1, C2) -> TupleView<(C0, C1, C2)>
5、static func buildBlock<C0, C1, C2, C3>(C0, C1, C2, C3) -> TupleView<(C0, C1, C2, C3)>
6、static func buildBlock<C0, C1, C2, C3, C4>(C0, C1, C2, C3, C4) -> TupleView<(C0, C1, C2, C3, C4)>
7、static func buildBlock<C0, C1, C2, C3, C4, C5>(C0, C1, C2, C3, C4, C5) -> TupleView<(C0, C1, C2, C3, C4, C5)>
8、static func buildBlock<C0, C1, C2, C3, C4, C5, C6>(C0, C1, C2, C3, C4, C5, C6) -> TupleView<(C0, C1, C2, C3, C4, C5, C6)>
9、static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7>(C0, C1, C2, C3, C4, C5, C6, C7) -> TupleView<(C0, C1, C2, C3, C4, C5, C6, C7)>
10、static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7, C8>(C0, C1, C2, C3, C4, C5, C6, C7, C8) -> TupleView<(C0, C1, C2, C3, C4, C5, C6, C7, C8)>
11、static func buildBlock<C0, C1, C2, C3, C4, C5, C6, C7, C8, C9>(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9) -> TupleView<(C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)>
12、static func buildEither<TrueContent, FalseContent>(first: TrueContent) -> _ConditionalContent<TrueContent, FalseContent>

为多语句闭包中的“ if”语句提供支持,从而为“ then”分支生成ConditionalContent。

13、static func buildEither<TrueContent, FalseContent>(second: FalseContent) -> _ConditionalContent<TrueContent, FalseContent>

为多语句闭包中的“ if-else”语句提供支持,从而为“ else”分支生成ConditionalContent。

14、static func buildIf<Content>(Content?) -> Content?

提供对多语句闭包中“ if”语句的支持,从而生成一个可选视图,该视图仅在条件评估为时可见true。

实施自定义视图

1、var body: Self.Body

视图的内容和行为。
需要。 提供了默认实现。

2、associatedtype Body : View

表示此视图主体的视图类型。
需要。