📚

SwiftUIでtrait(画面幅)の変更を検知してViewをアップデートするには

2022/12/30に公開

iPhoneの端末回転、iPadでのSplitViewなど、アプリを表示する画面幅が変更された場合にViewのレイアウトなどの表示を変えたい時がある。

その際には、Viewで
@Environment(\.verticalSizeClass) var verticalSizeClass
を宣言して使う。

使用例はこちら。

 if self.verticalSizeClass == .compact { // or .regular
     
 } else {
     
 }

verticalSizeClassはオプショナルであることにも注意。

VStack(alignment: .center) {
   // content
}
.scaleEffect((self.verticalSizeClass ?? .compact) == .compact ? 0.75 : 1.0 )

Discussion