🫙
SwiftUI で Spacer() に .padding()【混ぜるな危険】
環境
macOS Ventura 13.6.4
Xcode 15.2
次のコードの結果は?
var body: some View {
VStack() {
Text("Hello, World!")
Spacer()
Rectangle()
.fill(.red)
}
}
結果
次のコードの結果は?
var body: some View {
VStack() {
Text("Hello, World!")
.padding(.horizontal)
Spacer()
Rectangle()
.fill(.red)
}
}
結果
次のコードの結果は?
var body: some View {
VStack() {
Group {
Text("Hello, World!")
Spacer()
}
Rectangle()
.fill(.red)
}
}
結果
次のコードの結果は?
var body: some View {
VStack() {
Group {
Text("Hello, World!")
Spacer()
}
.padding(.horizontal)
Rectangle()
.fill(.red)
}
}
結果
なんと Spacer
が 縦方向に伸びました。見たところ、 Rectangle
と同等の力を持ったようです。
次のコードの結果は?
Spacer
に padding
を付けてみます。
var body: some View {
VStack() {
Text("Hello, World!")
Spacer()
.padding()
Text("Hello, World!")
Spacer()
.padding(.vertical)
Text("Hello, World!")
Spacer()
.padding(.horizontal)
Rectangle()
.fill(.red)
}
}
結果
.vertical
でも .horizontal
でも指定なしでも 縦方向に Rectangle
と同等の力を持つようです。
終わりに
この機能を積極的に使うことはあまりないと思いますが、ハマった人のために筆を取りました。
Discussion