はじめに
SwiftUIにおいて EmptyView()
がレイアウトに影響を与えないか気になったので、検証しました。
環境
- OS: macOS Sonoma 14.2.1 (23C71)
- Swift: 5.9.2
- シミュレータ: iPhone 15 Pro Max (17.2)
検証コード
以下のコードを実行して検証しました。
VStack
の spacing
に 16
を指定したので、もしレイアウトに影響を与えるなら Text
同士の間隔が大きくなるなどするはずです。
ContentView.swift
import SwiftUI
struct ContentView: View {
var body: some View {
VStack(spacing: 16) {
Text("Foo")
Text("Foo")
EmptyView()
Text("Foo")
EmptyView()
.border(.red)
Text("Foo")
EmptyView()
.frame(height: 8)
.border(.blue)
Text("Foo")
}
}
}
実行結果
検証コードの実行結果です。
EmptyView()
はレイアウトに影響を与えず、 Text("Foo")
が等間隔に5つ並びました。
おわりに
EmptyView
はレイアウトに一切影響しないことがわかりました。
これを知っておくと、例えばオプショナルな View
で nil
の代わりに EmptyView()
を返すことで、非オプショナルにできます。
またもし EmptyView
がレイアウトに影響を与えるケースがあれば、コメントなどで教えてくださると嬉しいです。