SwiftUI | iPhoneの縦向き横向きの検出方法

View

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の縦向き横向きの検出方法を説明した。

コメント

タイトルとURLをコピーしました