質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

3138閲覧

[Swift3] iPhoneとiPadでのstoeryboardの切り替えについて

kazzzstudio

総合スコア94

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/10/14 00:39

お世話になっております。

iPhone用のアプリをiPadに対応すべく、iPad用のstoryboradを作成しました。

そこでネットで検索したところ、iPad用のstoryboardを以下のように変更すると書かれていました。

(1)
targetRuntime="iOS.CocoaTouch"

targetRuntime="iOS.CocoaTouch.iPad"

(2)
<simulatedScreenMetrics key="destination" type="retina4"/>

<simulatedScreenMetrics key="destination"/>

しかし、storyboard(ソースで開いています)には、(2)の記述がもともとなく(1)しか書き換えられませんでした。

それが原因なのかわかりませんが、iPadで実行してもiPhone用のstoryboardが使われてしまっています。

iPad用(複数の)storyboardをswift3環境で切り替える方法をご教示頂けると幸いです。

宜しくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

自己解決しました。

以下のような関数を作成して、ストーリーボードを切り替える際に呼び出し、処理を振り分けることができました。

Swift3

1 var iosDevice: String { 2 if UIDevice.current.userInterfaceIdiom == .phone { 3 if 1.0 < UIScreen.main.scale { 4 let size = UIScreen.main.bounds.size 5 let scale = UIScreen.main.scale 6 let result = CGSize(width: size.width * scale, height: size.height * scale) 7 switch result.height { 8 case 960: 9 return "iPhone4/4S" 10 case 1136: 11 return "iPhone5/5s/5c" 12 case 1334: 13 return "iPhone6" 14 case 2208: 15 return "iPhone6 Plus" 16 default: 17 return "unknown" 18 } 19 } else { 20 return "iPhone3" 21 } 22 } else { 23 if 1.0 < UIScreen.main.scale { 24 return "iPad Retina" 25 } else { 26 return "iPad" 27 } 28 } 29 }

呼び出し側(AppDelegate.swift)

Swift3

1 if (iosDevice.range(of: "iPhone6") != nil) { 2 storyboard = UIStoryboard(name: "iPhone6Storyboard", bundle: nil) 3 self.window!.rootViewController = storyboard.instantiateInitialViewController() as! ViewController 4 } 5 else if (iosDevice.range(of: "iPad") != nil) { 6 storyboard = UIStoryboard(name: "iPadStoryboard", bundle: nil) 7 self.window!.rootViewController = storyboard.instantiateInitialViewController() as! ViewController 8 }

投稿2016/10/14 04:06

kazzzstudio

総合スコア94

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問