如何在SwiftUI中为自定义视图提供视图?

如何在SwiftUI中为自定义视图提供视图?,swiftui,Swiftui,我在ContentView()中使用了一个CustomVStackView(),我的目标是能够从ContentView()向CustomVStackView()提供另一个视图。 这里的代码,它有问题 struct ContentView: View { var body: some View { CustomVStackView(inPutView: Text("Hello").font(Font.largeTitle) )

我在ContentView()中使用了一个CustomVStackView(),我的目标是能够从ContentView()向CustomVStackView()提供另一个视图。

这里的代码,它有问题

    struct ContentView: View {
 
    
    var body: some View {

        CustomVStackView(inPutView: Text("Hello").font(Font.largeTitle) )
        
    }
}


struct CustomVStackView: View {
    

    
    var inPutView: View = EmptyView()
    
    var body: some View {
        

        VStack
        {
            inPutView
 
        }.padding().background(Color.purple)
        
        
    }
}

PS:我知道AnyView(),但我有兴趣为我的inPutView提供一个像样的普通视图(),比如Text()或Circle()

您必须使用泛型才能传递任意视图。在这种情况下,
CustomVStackView
将具有符合
View
的泛型类型
Content

如果您还使用
@ViewBuilder
作为参数,则
CustomVStackView
的用户将能够对内部视图使用与普通
VStack
相同的语法(以及整个SwiftUI):


哇!谢谢,您实际上也用这个答案回答了我未来的问题,我想问一下如何以使用“{”和“}”的方式提供我的CustomView。
struct CustomVStackView<Content: View>: View {
    
    private var inputView: () -> Content

    init(@ViewBuilder inputView: @escaping () -> Content) {
        self.inputView = inputView
    }
    
    var body: some View {
        VStack
        {
            inputView()
        }
        .padding().background(Color.purple)
    }
}
CustomVStackView() {
    Text("Hello").font(Font.largeTitle)
    Text("World")
}