Stack
Skip support for SwiftUI Stacks on Android. Consult the SkipUI module for a complete list of supported SwiftUI.
The following example screens and source code is from SkipUI’s
Showcase sample app
StackPlayground.swift
import SwiftUI
struct StackPlayground: View {
var body: some View {
ScrollView {
VStack(spacing: 16.0) {
HStack {
Text("Before fixed")
.border(Color.blue)
HStack {
Spacer()
Text("After expanding")
}
.border(Color.red)
Text("After fixed")
.border(Color.blue)
}
VStack {
Text("Text1")
Text("Text2")
}
.border(Color.blue)
Text("Sized to content:")
VStack(spacing: 0.0) {
Color.red.frame(width: 50.0, height: 50.0)
Color.green.frame(width: 50.0, height: 50.0)
}
.border(Color.blue)
Text("Content sizes to stack:")
VStack(spacing: 0.0) {
Color.red
Color.green
}
.frame(width: 50.0, height: 100.0)
.border(Color.blue)
VStack {
Text("Text1")
Color.green.frame(width: 50.0, height: 50.0)
}
.border(Color.blue)
VStack {
Color.red.frame(width: 50.0, height: 50.0)
Text("Text2")
}
.border(Color.blue)
VStack(content: horizontalStripes)
.background(.yellow)
.frame(width: 100.0, height: 100.0)
HStack(content: verticalStripes)
.background(.yellow)
.frame(width: 100.0, height: 100.0)
ZStack {
Color.yellow
Color.red.padding(25.0)
}
.frame(width: 100.0, height: 100.0)
}
.padding()
}
.toolbar {
PlaygroundSourceLink(file: "StackPlayground.swift")
}
}
// Note: these functions are also a test that we can pass functions to SwiftUI content view builders.
@ViewBuilder private func horizontalStripes() -> some View {
Spacer()
Color.red.frame(height: 20.0)
Spacer()
Color.red.frame(height: 20.0)
Spacer()
}
@ViewBuilder private func verticalStripes() -> some View {
Spacer()
Color.red.frame(width: 20.0)
Spacer()
Color.red.frame(width: 20.0)
Spacer()
}
}