[Swift]iPhoneの画面サイズごとにStoryboardを変更する

iPhone6/6Plusが出るまではiPhoneの画面サイズが2つしかなくアプリ開発が簡単だった!
なのに今は…4つ!(多すぎる!)これは、iPhoneアプリ開発で厄介な問題の1つですよね。

AutoLayoutを使って様々な画面サイズに対応させていく方法がありますが、AutoLayoutは結構癖がある!
というわけで、「Storyboardを端末ごとに変更する」方法を紹介します。

前準備

TARGET>アプリ>General>Deployment Info>Main Interface

ここを空白にする

コード

  1. DelegateでiPhoneの画面サイズを取得する
  2. 条件分岐で画面サイズごとに変数にSyoryboardのIDを割り当てる
  3. ルートにViewを引っ掛ける

デフォルトでdidFinishLaunch…..はあると思うのでご注意を!

var navigationController: UINavigationController?
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        var ID : String = "Default"
        
                let screen:CGSize = UIScreen.mainScreen().bounds.size
                switch screen.height{
                case 480.0:ID = "iPhone3_5";break
                case 568.0:ID = "iPhone4";break
                case 736.0:ID = "iPhone5_5";break
                default:break
                }

        var SB: UIStoryboard = UIStoryboard(name: ID, bundle: NSBundle.mainBundle())
        var MVC: UIViewController = SB.instantiateInitialViewController() as! UIViewController
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        self.navigationController = UINavigationController(rootViewController: MVC)
        self.window?.rootViewController = navigationController
        self.window?.makeKeyAndVisible()
        
        return true
    }

これでAutoLayoutを使わなくても画面サイズに対応できます。

お役に立てれば幸いです!

コメントを残す