SwiftUIでのiPhoneの縦向き横向きの検出方法を説明する。
Swift 5.7 / Xcode 14.0 / iOS 16.0
結論
horizontalSizeClass、verticalSizeClassを利用する。
horizontalSizeClassとverticalSizeClassはiPhoneの向きによりregularかcompactが設定されるので、それを利用してiPhoneが縦向きか横向きかを検出することができる。
![](https://swiftui.kazunoriri.com/wp-content/uploads/2022/11/image-1024x390.png)
公式ドキュメントはこちら。Device size classesの項を参照。
具体例
iPhoneの向きによりTextの表示内容を変えるAppを作成する。
![](https://swiftui.kazunoriri.com/wp-content/uploads/2022/11/スクリーンショット-2022-11-16-23.17.31-542x1024.png)
![](https://swiftui.kazunoriri.com/wp-content/uploads/2022/11/スクリーンショット-2022-11-16-23.17.24-1024x638.png)
コード
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の縦向き横向きの検出方法を説明した。
コメント