web-dev-qa-db-ja.com

UIViewとコンテナビュー

これが私が解決しようとしている問題です。

viewControllerに、広告と実際のコントロール要素を挿入しようとしています。 raywenderlinch.comでいくつかのチュートリアルを終了して、人々がアプリに専門的に広告を掲載する方法を理解しました。彼らはUIViewsを使用して、ViewControllerのメインビューの下に2つのビューを作成しました。そのため、1つはsubviewが広告を保持し、もう1つは実際のアプリコンテンツを保持していることを完全に理解しました。広告が読み込まれた場合は画面を表示するか、他のビューにすべての使用可能な領域を持たせます。

Xcodeに戻った後、そこで学んだ方法でコーディングを始めました。しかし、ストーリーボードにUIViewをドロップしているときに、containerViewが表示されました。これは、チュートリアルの作成時には存在していなかったと思います。
そこで私は、アプローチとその長所と短所の両方について質問するためにここにいます。
つまり、基本的にはUIViewContainerViewです。どちらの方法で、なぜですか?
どんな助けでも大歓迎です。

11
Alix

すでにビューがあり、ビュー内のインタラクションを構築および処理するために専用のビューコントローラを用意する必要がない場合は、UIViewを使用します。

IViewヘルプページから:

UIViewオブジェクトは、それを囲むsuperview(ビュー階層内の親)の長方形の領域を要求し、その領域内のすべての描画を担当します。

簡略化された構造:YourViewControllerhas)--->---(UIView


すでに持っているビューコントローラーに別のビューコントローラーを埋め込む必要がある場合は、UIContainerViewを使用します。埋め込みビューコントローラーは、UIViewContainerが占める領域のビューを返す役割を果たします。したがって、UIContainerViewは、それが占める領域内にUIViewをレンダリングするために使用するViewControllerを認識しています。

IContainerViewヘルプページから:

コンテナビューは、子ビューコントローラを含めることができるビューコントローラのビューサブグラフ内の領域を定義します。

簡略化された構造:YourViewControllerhas)--->---(SubViewControllerhas)--->---(UIView ==

そのSubViewControllerはビューを返し、そのイベントを処理します。

28
Keenle

別の答えとして、技術的な違いの代わりにユースケースを検討することもできます。例:なぜコンテナビューを使用するのですか?

コンテナビューの一般的な使用法は、ストーリーボードで直接ビューを再利用(共有)することです。以前は、ビューを再利用するには、別の「xib」ファイルを作成し、ViewControllerがロードされたときにそのビューをプログラムで追加する必要がありました。

example use case of a container view

上の画像は this からのものです。2つ以上のビューコントローラー間で共有されるコンテナービューをセットアップする方法を説明する、非常にシンプルでわかりやすいガイドです。

それをいつ使用するかについての他のいくつかの考え:

  • ナビゲーションバーはUINavigationControllerの一部です コンテナビューコントローラです 。したがって、カスタムの代替案を作成する場合は、おそらくコンテナビューを使用します。
  • コンテナは、現在のVCの上に複雑なビューを一時的に表示したいが、別のVC =モーダル。このアプローチでは、Interface Builderで一時ビューを作成したり、自動レイアウト制約を設定したりすることができます。
  • また、 ガイド 状況に基づいてさまざまなコンテナビューを切り替える方法があることを説明し、VCに非常に動的なサブセクションを持たせることができます、それでも、これらのサブセクションをプログラムで作成する必要はありません。そのガイドからの写真で、私が言及していることを示しています。

using multiple container view options

うまくいけば、これはコンテナビューがいつ適用されるかを理解しようとしている人々に役立つでしょう。他の使用例がある場合は、編集/追加するか、コメントに残してください。

8
Dave G

詳細を見ると、UIViewクラスタイプのこれらのコンテナビューが表示されます。 containerViewが必要な理由を理解するには、以下の部分を参照してください。

ほとんどの点で、コンテナビューコントローラはコンテンツビューコントローラと同じです。ビューとコンテンツを管理し、アプリ内の他のオブジェクトと調整し、レスポンダーチェーン内のイベントに応答します。コンテナコントローラーを設計する前に、コンテンツビューコントローラーの設計に精通している必要があります。 「カスタムコンテンツビューコントローラーの作成」の設計に関する質問は、コンテナーの作成時にも適用されます。

コンテナビューの詳細については、goto link ただし、始める前に、次のことを理解しておく必要があります。

また、コンテナビューの使用方法については このチュートリアル を確認できます。

したがって、両方のアプローチを選択できます。これがお役に立てば幸いです。幸せなコーディング:)

1
Shubhendu