在 SwiftUI 中,您可以将多个视图作为一个参数传递给另一个视图,这要归功于@ViewBuilder
. 每个子视图都被单独处理,因此在被传递后,可以包含在 aVStack
等中HStack
。
我的问题是:这个容器视图是否可以单独修改传递给它的每个子视图?例如,通过Spacer
在每个子视图之间添加一个。
这是我正在寻找的等效功能:
struct SomeContainerView<Content: View> {
init(@ViewBuilder content: @escaping () -> Content) {
self.content = content()
}
let content: Content
var body: some View {
HStack {
ForEach(content.childViews, id: \.id) { child in
// Give each child view a background
// Add a Spacer in between each child view
// Conditional formatting
// Etc.
}
}
}
}
我相信这是可能的,因为标准 SwiftUI 容器视图会影响传递给它们的子视图的外观和布局。除非这是通过 SwiftUI 的内部功能实现的?
解决此问题的一种方法可能是传递多个视图参数而不是一个,但如果需要传递许多视图,这是不灵活且混乱的。视图数组似乎也没有意义,因为我在 SwiftUI 的任何地方都没有注意到这种模式。