0

ご挨拶!Apple のTheElementsサンプル アプリからビュー フリップの概念を借用しようとしています。このサンプルでは、 ​​2 つのサブビューを切り替えることができるコンテナーUIViewを使用しています。フリップはsetAnimationTransition:forView:cache:、各サブビューを使用して削除/追加することで実現されます。

一般に、フリップは機能し、2 つのビュー (ヘッダー/フッターを含むUITableViewMKMapView ) を切り替えることができます。ただし、テーブル ビューが反転される前後に、テーブル ビューのさまざまな (一貫して選択された) 領域が (テーブル ビューの背景色を使用して)消去され、その理由がわかりません。

描画に関しては、テーブル ビューに異常は見当たりません。サンプルアプリの場合、ビューはゼロから描画されますが、それが考慮されていないことを願っています! 私はそれが単純なものであることを本当に望んでいます.UITableViewプロパティの設定でしょうか?

手がかりに感謝します。ありがとう!

更新:アニメーションの速度を落とすと、何が妨げられているのかがわかり始めます (理由はまだわかりませんが)。私のテーブル ヘッダー ビューには、画像ビューとラベル ビューが含まれています。ここで、これら 2 つのビューのCGRectを想像してください(表示されるコンテンツはなく、背景色のみ)、テーブル ビューのさらに下、テーブルの行の真上に再描画されます。

これは、(セル内のテキストのサイズを変更するために) カスタムの高さで設定されたテーブル ビュー セルに由来するように見える別の領域のチャンクでも発生します。

コード全体 (サイズ変更、作成、およびその他の場所) に無用な数のブレークポイントをドロップしましたが、移行中にヒットするブレークポイントは1 つもありません。

テーブルビューをUIView内に配置して、代わりにそれをトランジションのターゲットにしようとさえしました。変わりはない。

API ドキュメントから:

キャッシングによりパフォーマンスを向上させることができますが、このパラメーターを YES に設定した場合、遷移中にビューまたはそのサブビューを更新してはなりません。ビューとそのサブビューを更新すると、キャッシュ動作が妨げられ、アニメーション中にビューのコンテンツが正しく (または間違った場所に) レンダリングされる可能性があります。ビューを更新するには、トランジションが終了するまで待つ必要があります。

これで問題ありませんが、移行中はビューやサブビューを更新しません。(少なくとも意図的ではありません! 繰り返しますが、ブレークポイントに関する注意を参照してください。何もヒットしませんでした。)

4

1 に答える 1

0

すばらしい。

回答: この場合、シミュレータでのみ発生するようです。デバイス上では問題ありません。

そのようなありふれた遷移は、シミュレーターとデバイスで同じようにレンダリングされるようなものになると考えていました。

私は間違っていた。したがって、シミュレーターでアニメーション遷移の不具合が発生した場合は、しばらくお待ちください。やっぱりいいかも。

于 2009-07-26T15:40:20.917 に答える