[SwiftUI]NavigationView の表示を iPhone と iPad で同じにする

SwiftUIiOS アプリを開発中に NavigationView を利用した際に iPhoneiPad ではデフォルトの挙動が異なっていたので、 iPhoneiPad で同じ挙動にするための実装方法を説明します。

SwiftUI NavigationView 1

iPhone だとこんな感じに表示されますが・・・。

SwiftUI NavigationView 2

iPad だと部品が左側に表示されます。

iPad だと NavigationView を利用すると画面の左側にナビゲーションとして部品を表示するみたいです。これを iPhone と同じ表示にしたいと思います。

navigationViewStyle を設定する

navigationViewStyleStackNavigationViewStyle() を設定します。

        NavigationView {
            VStack {
                Text("First View")
                NavigationLink(destination: SecondView(), isActive: self.$model.secondViewPushed) {
                    Button(action: {
                        self.model.secondViewPushed = true
                    }) {
                        Text("次へ")
                    }
                }
            }
        }.navigationViewStyle(StackNavigationViewStyle())

動作確認

SwiftUI NavigationView 3

iPadiPhone と同じ表示にすることができました!!

最後に

iPadiPhone で表示が異なると、それぞれのデバイス毎に画面のデザインをしないといけなくなるので、 iPadiPhone で特に画面のレイアウトを変える必要がない場合は今回の対応を行うことで同じ画面レイアウトで実装していけると思います。

もちろん、 iPhoneiPad のそれぞれの特徴を活かしたアプリを開発したいのであれば、 NavigationView の部品が iPad の左側に表示されることを上手く活用した方が良いと思います。表示できる情報量なども iPhoneiPad では異なるので、自分が作りたいアプリに合わせて設計・実装していきたいですね。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です