これを少し下にスクロールすると Apple Developer Page 「代替ランドスケープインターフェースの作成」というセクションがあります。そこで説明されている基本的なアプローチは、向きが変わったときに、異なるNIBファイルをモーダルビューとして表示することです。ストーリーボード機能を使用しているため、NIBがありません。その場合、別の「シーン」をどのようにロードしますか?
それ以外に、Tab Barコントローラーを使用していますが、モーダルビューを表示したくありません。現在の縦向きのビューを、インターフェイスビルダーで設計された横向きのビューに置き換え、タブバーを保持したいだけです。 「代替ランドスケープインターフェースの作成」というタスクを達成するためのストーリーボードの方法は何ですか?ありがとうございました。
ストーリーボードにビューコントローラーを追加すると、ビューが付属します。これをコンテナビューと呼びます。コンテナービューに、縦向きビューと横向きビューの2つのビューを追加します。サイズインスペクタを使用して、縦向きビューと横向きビューの寸法を適切に設定します。アプリケーションの必要に応じて、ボタン、ビュー、ラベルなどを縦向きと横向きのビューに追加します。次に、向きを変更すると、一方のビューが非表示になり、もう一方のビューが表示されます。
ナビゲーションコントローラと1つのメインビューを設定できます。次に、縦向きと横向きのレイアウトにテンプレートビューを使用できます(2つの追加ビュー)。
メインビューでコントロールを設定し、各コントロールに一意のタグがあることを確認する必要があります。メインビューは使用されません。代わりに、コントロールを2つのテンプレートビューにコピーし、各ビューの外観に基づいて設定します。これの利点は、各ビューがそのタグを保持することであり、この実装の非常に重要な部分になります。
これを行うには、UIコードの記述とInterface Builderの使用に関してハイブリッドアプローチを使用します。 2つのテンプレートを設定したら、それぞれに一意の識別子を作成します。ビューとそのサブビューを処理するためのロジックを記述する必要があります。選択したテンプレートに基づいてこれらのコレクションを返す再帰的なメソッド。
ルートビューコントローラー実装のコアロジックは、isPortraitをチェックする必要があり、これに基づいて、識別子に基づいて正しいビューをロードします。
この概念を試して、うまくいくかどうかを確認してください。固有のコントロールを持つ2つの個別のビューを使用しない(同じタグを使用する共有アプローチではない)ことの主な利点は、元のサブビューへのアクセスを維持できることです。テキストフィールド、ラベルなどを指すビューコントローラーで定義するインスタンス変数は、どのテンプレートビューが使用されているかに関係なく、引き続きそうします。これにより、データ構造が変更されないまま、モデル、ビュー、コントローラーのアプローチが維持されます。
このアプローチを使用すると、必要に応じてカスタムUIコードを柔軟に記述しながら、インターフェイスビルダーの使用を最大化し、各ビューのテンプレートをレイアウトできます。インターフェイスビルダーのみを使用すると、場合によっては少し制限が生じる可能性があり、向きに基づいてカスタムコードを作成すると、少し面倒な作業が必要になります。
これが一部に役立つことを願っています。
2つのuiviewを含むxibファイルを作成できます。 xibのファイルの所有者として、ストーリーボードにあるビューthetと同じビューコントローラーを割り当てます。 viewDidLoadでxibファイルをロードし、縦長または横長の適切なビューを追加します。
したがって、多くのビューコントローラを備えたストーリーボードがある場合、向きを変更したいビューコントローラでのみ、2つの可能性(ポートレートビューまたはランドスケープビュー)を設定できます。
私はこのソリューションを使用し、非常にうまくいきました!