サブビューを追加して表示したいビューをアニメーション化するだけでなく、UIPresentationController の利点は何ですか? 準拠しなければならないすべてのプロトコルを考えると少し面倒に思えますが、多くの人は依然として単純なフレーム アニメーションでビューを表示することを好みます。クラスを導入する際の Apple のロジックは何でしたか?
1 に答える
3
プレゼンテーション機構は、UIPresentationController が導入されるずっと前から UIKit の一部でした。UIPresentationController は柔軟性を高め、組み込みのプレゼンテーション (フルスクリーン、現在のコンテキスト、ポップオーバーなど) とは別にカスタム プレゼンテーションを作成できるようにします。プレゼンテーション機構と UIPresentationController が存在する理由はいくつかあります。
- ビュー階層の管理。ビューを表示したいときはいつでも、常に表示ビューコントローラーを所有しているとは限りません。通常、所有していないView Controllerのサブ階層に干渉することは推奨されませんが、プレゼンテーションの場合、提示されたView Controllerのビューを提示の子として追加する必要がありますビュー コントローラーのビュー (またはそのスーパービュー)。コンテキスト内のプレゼンテーション チェーンが関係している場合は、より複雑になります (たとえば、ポップオーバー -> 現在のコンテキスト -> 共有シート)。プレゼンテーション機構が使用されている場合、UIKit はビューの階層管理を一貫した方法で処理します。また、UIPresentationController クラスのコンテナー ビューを確立して、プレゼンテーションに参加しているビューのみの管理に集中できるようにします。UIPresentationController クラスは、コンテナ ビューに任意の装飾とシャドウ ビューを追加し、
containerViewWillLayoutSubviews
メソッドのレイアウト変更に対応することを選択できます。 - モダリティの管理。ビュー コントローラーは非常に特定の順序で表示および破棄され、プレゼンテーション コントローラー API はこれを強制します。プレゼンテーション機構は、プレゼンテーションによって不明瞭になったビューの対話が無効になっていることも確認します。
- ビュー コントローラの階層を維持します。プレゼンテーション コントローラは、より具体的なタイプのビュー コントローラ コンテインメントと見なすことができ、提示されたビュー コントローラが引き続きビュー コントローラ階層の一部であることを確認します。これは、特性コレクションの伝播、外観のコールバック、送信
viewWillTransitionToSize:withTransitionCoordinator:
、View Controller トランジションの実行 (ネストされたプレゼンテーションを含む) などに必要です。 - ファーストレスポンダーの管理。プレゼンテーションが行われると、現在のファーストレスポンダーは隠され、解雇後に復元されます。
于 2016-07-13T02:44:06.367 に答える