Swift マルチデバイス対応 Storyboard分岐の方法まとめ

マルチデバイス対応方法

マルチデバイスでレイアウトを崩さないようにするには以下の3つの方法があります。

  1. オートレイアウト
  2. プログラムで対応
  3. Storyboard分岐

 

1.オートレイアウト

パーツ同士が干渉し合ったり、初心者には難しい

2.プログラムで対応

数字の直打ちをせずに画面の大きさに対してプログラムで幅や高さを決める

3.Storyboard分岐

画面の高さによってStoryboadを分ける

 

今回は3.Storyboard分岐の方法をメモしておきます。

Storyboard分岐方法

SceneDelegate.swiftを開く

func sceneの中に以下のコードを貼り付ける

let storyboard:UIStoryboard = self.grabStoryboard()
                        
if let window = window{
  window.rootViewController = storyboard.instantiateInitialViewController() as UIViewController?
}

self.window?.makeKeyAndVisible()

func sceneの下に以下のコードを追加する


    func grabStoryboard() -> UIStoryboard{
               
               var storyboard = UIStoryboard()
               let height = UIScreen.main.bounds.size.height
               if height == 667 {
                   storyboard = UIStoryboard(name: "Main", bundle: nil)
                   //iPhone7,8
               }else if height == 736 {
                   storyboard = UIStoryboard(name: "iPhone8plus", bundle: nil)
                   //iPhone8Plus
               }else if height == 812{
                   storyboard = UIStoryboard(name: "iPhone11Pro", bundle: nil)
                    //iPhoneX,XS,11pro
               }else if height == 896{
                   storyboard = UIStoryboard(name: "iPhone11", bundle: nil)
                    //iPhoneXR,XSMAX,iPhone11
               }else if height == 1112{
                   
                   storyboard = UIStoryboard(name: "iPad", bundle: nil)
               }else{
                   
                   switch UIDevice.current.model {
                   case "iPnone" :
                   storyboard = UIStoryboard(name: "se", bundle: nil)
                       break
                   case "iPad" :
                   storyboard = UIStoryboard(name: "iPad", bundle: nil)
                   print("iPad")
                       break
                   default:
                       break
                   }
               }
               return storyboard
       }

main.storyboardを開く

矢印の部分をクリックしてコピーする

フォルダをクリック

File > New >Fileで新しいファイルを作成する

Storyboardを選択

ファイル名を変える。

注意
SceneDelegate.swiftのこの部分と一緒な名前にする

View asを変える

さっきコピーしたStoryboardをペーストする

Is Initial View Controller にチェックを入れる

チェックを入れると矢印がでる

これが出ないとエラーになる

確認

シミュレーターの切替でStoryboardが切り替わっていることが確認できる

 

 

 

コメントを残す

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