I am trying to build a custom view which adds space between each content of TupleView, here is my pseudocode until now? What I should do more in codes to make it happen?
struct CustomSpacerView<Content1: View, Content2: View, Content3: View>: View {
@ViewBuilder let content: () -> TupleView<(Content1, Content2, Content3)>
var body: some View {
ForEach(Array(arrayLiteral: content().value).indices, id:\.self) { index in
Spacer()
content().value.index
}
Spacer()
}
}
use case:
struct ContentView: View {
var body: some View {
CustomSpacerView {
Text("Hello, World!")
Text("Hello, World!")
Text("Hello, World!")
}
}
}
You don't need ForEach
for tuples, because all values are defined, so here is a demo of possible approach.
Tested with Xcode 13.1 / iOS 15
struct ContentView: View {
var body: some View {
VStack {
CustomSpacerView {
Text("Hello, World!")
Text("Hello, World!")
Text("Hello, World!")
}
}
HStack {
CustomSpacerView {
Text("Hello, World!")
Text("Hello, World!")
Text("Hello, World!")
}
}
}
}
struct CustomSpacerView<Content1: View, Content2: View, Content3: View>: View {
@ViewBuilder let content: () -> TupleView<(Content1, Content2, Content3)>
var body: some View {
let value = content().value
value.0
Spacer()
value.1
Spacer()
value.2
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.