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