ストーリーボードを使用するユニバーサルアプリがあります。 iPhoneストーリーボードとiPadストーリーボードがあります。ただし、Interface Builderでは、iPadストーリーボードのビューコントローラーはiPhone用のサイズのままです。 iPadストーリーボードにiPadサイズのビューコントローラーを表示するにはどうすればよいですか?
Interface Builderのビューコントローラーの表示はデザイン時だけの目玉だと思いますが、iPhoneサイズのVCを使用すると、UIを正しくレイアウトするのが非常に難しくなります。
ストーリーボードのソースコードを少し調べたところ、iPadのストーリーボードがiPhoneのストーリーボードからコピーされたことがわかりました。では、iPhoneのストーリーボードをiPadのストーリーボードに変換するにはどうすればよいのでしょうか。
答えは驚くほど簡単です。私は遭遇しました this SO answer -iPhoneストーリーボードをiPadストーリーボードに変換するには、次のようにします:
Xcodeからストーリーボードを右クリックし、[名前を付けて開く]-> [ソースコード]を選択します
targetRuntime="iOS.CocoaTouch"
を検索し、targetRuntime="iOS.CocoaTouch.iPad"
に変更します
ストーリーボードをもう一度右クリックして、[名前を付けて開く]-> [iOSストーリーボード]を選択します
ストーリーボードには、すべてのビューが正しいサイズで表示されます。
ストーリーボードを最初に作成するときは、ストーリーボードの対象となるデバイスファミリ(iPhoneまたはiPad)を選択します。ストーリーボードが作成されたら、デバイスファミリを変更する方法がわかりません。
ただし、問題を解決するには、次のことをお勧めします。
[新規]-> [ファイル]-> [ユーザーインターフェイス]-> [ストーリーボード]に移動して、新しいストーリーボードを作成します(オプションを選択するときは、必ず[デバイスファミリー] = [iPad]を選択してください)。
古いストーリーボードに移動し、Command-A、Command-Cを押して、すべてを選択してコピーします。次に、に移動し、Command-Vを押してすべてを貼り付けます。これで、ViewControllerはiPadサイズになります。
次に、古いストーリーボードを削除し、新しいストーリーボードの名前を古い名前に変更できます。
この答えは解決策ではありませんが、そのようなことが起こる理由の1つを得るのに役立ちます。
この問題は、以下を無効にしようとすると発生します。
「自動レイアウトを使用する」
チェックを外すと、ポップアップウィンドウが表示されます。選択があります:
"Keep size class data for:iPhone"、デフォルトで選択されていますiPhone(作成したiPadまたはiPhoneプロジェクトに関係なく)。
言及しない場合、ストーリーボードは自動変換されますiPhoneサイズ。
正しいデバイスを選択することを忘れないでください。
提案された回答を使用してiPhoneストーリーボードをiPadストーリーボードに変換しましたが、ほとんどのビューでうまく機能しました。しかし、ビューの1つがまだiPhoneストーリーボードサイズであることに気付きました。その理由は、1つの背景画像のすべてのプロパティをロックしたためです(誤って移動したくなかったため)。ロックを解除すると、ビューがiPadサイズに戻りました。これは誰かがこれに固執するのを助けるかもしれません。
Xcode 6.2ではtargetRunTimeの変更は機能しませんでしたが、ビューを手動でコピーするこの2番目の方法でうまくいきました。
私のユニバーサルアプリでは、メインのビューコントローラーにSpriteKitを使用していました。 SKScene.scaleMode
はaspectFill
に設定されました。 iPadシミュレーターで実行すると、アプリはiPhoneモードで起動しました。解決策はscaleMode = .resizeFill
を設定することでした。
[ターゲット]> [一般]で正しいストーリーボードを設定していることを確認してください。このちょっとしたことで、iPadのストーリーボードと同じストーリーボードをiPhoneに設定したことに気付く前に、3時間頭痛がします。