ご挨拶!Apple のTheElementsサンプル アプリからビュー フリップの概念を借用しようとしています。このサンプルでは、 2 つのサブビューを切り替えることができるコンテナーUIViewを使用しています。フリップはsetAnimationTransition:forView:cache:
、各サブビューを使用して削除/追加することで実現されます。
一般に、フリップは機能し、2 つのビュー (ヘッダー/フッターを含むUITableViewとMKMapView ) を切り替えることができます。ただし、テーブル ビューが反転される前後に、テーブル ビューのさまざまな (一貫して選択された) 領域が (テーブル ビューの背景色を使用して)消去され、その理由がわかりません。
描画に関しては、テーブル ビューに異常は見当たりません。サンプルアプリの場合、ビューはゼロから描画されますが、それが考慮されていないことを願っています! 私はそれが単純なものであることを本当に望んでいます.UITableViewプロパティの設定でしょうか?
手がかりに感謝します。ありがとう!
更新:アニメーションの速度を落とすと、何が妨げられているのかがわかり始めます (理由はまだわかりませんが)。私のテーブル ヘッダー ビューには、画像ビューとラベル ビューが含まれています。ここで、これら 2 つのビューのCGRectを想像してください(表示されるコンテンツはなく、背景色のみ)、テーブル ビューのさらに下、テーブルの行の真上に再描画されます。
これは、(セル内のテキストのサイズを変更するために) カスタムの高さで設定されたテーブル ビュー セルに由来するように見える別の領域のチャンクでも発生します。
コード全体 (サイズ変更、作成、およびその他の場所) に無用な数のブレークポイントをドロップしましたが、移行中にヒットするブレークポイントは1 つもありません。
テーブルビューをUIView内に配置して、代わりにそれをトランジションのターゲットにしようとさえしました。変わりはない。
API ドキュメントから:
キャッシングによりパフォーマンスを向上させることができますが、このパラメーターを YES に設定した場合、遷移中にビューまたはそのサブビューを更新してはなりません。ビューとそのサブビューを更新すると、キャッシュ動作が妨げられ、アニメーション中にビューのコンテンツが正しく (または間違った場所に) レンダリングされる可能性があります。ビューを更新するには、トランジションが終了するまで待つ必要があります。
これで問題ありませんが、移行中はビューやサブビューを更新しません。(少なくとも意図的ではありません! 繰り返しますが、ブレークポイントに関する注意を参照してください。何もヒットしませんでした。)