SwiftUIでのiPhoneの縦向き横向きの検出方法を説明する。
Swift 5.7 / Xcode 14.0 / iOS 16.0
結論
horizontalSizeClass、verticalSizeClassを利用する。
horizontalSizeClassとverticalSizeClassはiPhoneの向きによりregularかcompactが設定されるので、それを利用してiPhoneが縦向きか横向きかを検出することができる。
公式ドキュメントはこちら。Device size classesの項を参照。
具体例
iPhoneの向きによりTextの表示内容を変えるAppを作成する。
コード
import SwiftUI
struct ContentView: View {
@Environment(\.horizontalSizeClass) var 横SizeClass
@Environment(\.verticalSizeClass) var 縦SizeClass
var body: some View {
switch (横SizeClass, 縦SizeClass) {
case (.regular, .regular):
Text("iPadの縦向き or 横向き")
case (.compact, .regular):
Text("iPhoneの縦向き")
case (.regular, .compact):
Text("iPhoneの横向き\n(大きいiPhone)")
case (.compact, .compact):
Text("iPhoneの横向き\n(小さいiPhone)")
default:
EmptyView()
}
}
}
まとめ
SwiftUIでのiPhoneの縦向き横向きの検出方法を説明した。
コメント