7

UICollectionView のフレームを変更すると (通話中のステータス バーを切り替える場合など)、コレクション ビューが新しいフレームのセルを適切に更新しないことに気付きました。短いビデオで見るのがおそらく最も簡単です。

http://cl.ly/2t2Y2A3A2w1D/CollectionViewTest.mov

その簡単なテストのソース ファイルは次のとおりです。

http://cl.ly/0S0A360B3I3Q/CollectionViewTest.zip

UICollectionViewController を使用するか UIViewController を使用するかは問題ではないようです。誰もこれを見たことがありますか?何か不足していますか?私が見つけた唯一の回避策は、View ControllerのviewWillLayoutSubviewsまたはviewDidLayoutSubviewsのコレクションビューでreloadDataを呼び出すことです。これは機能しますが、reloadDataが何度も呼び出され、結果がユーザーがドラッグしている間、UI の更新が非常に遅くなります。

4

3 に答える 3

2

同様の問題がありました。コレクションビューフレームのサイズを変更して、メニューがその下に表示され、ユーザーがメニューが下部のセルを覆わないようにスクロールアップできるようにする必要がありました。

コンテンツインセットを変更するとうまくいきました。

self.collectionView.contentInset = UIEdgeInsetsMake(0, 0, rect.size.height+8, 0);

データをリロードせずにコレクション ビューのフレームを変更して動作させることはできませんでした。これにより、ユーザーが既に選択しているセルが台無しになってしまいます。

于 2013-05-14T16:56:55.183 に答える