テストとして、セルを縦に並べて表示するレイアウトと、横に並べて表示するレイアウトを作成しました。私が呼び出す[collectionView setCollectionViewLayout:layout animated:YES];
と、2 つの位置の間で非常にきれいにアニメーション化されます。
私がやりたいのは、最終的に目的地に到着する前に、すべてのビューに画面の周りでいくつかのスピン、ワープ、フリップを実行させることです (おそらく CAKeyframeAnimations を使用)。
UICollectionViewLayoutAttributes
アニメーション プロパティを含むようにサブクラス化してから、使用している のオーバーライドされたapplyLayoutAttributes:
メソッドでそれらのアニメーションを設定しようとしましたUICollectionViewCell
。これは機能します...ただし、レイアウトの移行が完了した後にのみ発生するようです。これを使用したい場合は、オブジェクトの現在の位置をすぐに変更しないようにレイアウトを設定する必要があります。これは、コードのこの適用属性部分に到達した後でのみです。これは大変な作業のように思えます...
または、 をサブクラス化UICollectionView
してオーバーライドすることもできますsetCollectionViewLayout:animated:
が、それはレイアウト間で保持する必要がある多くの状態のようにも思えます。レイアウト内のセルの追加/削除をアニメーション化する簡単な方法があるため、これらのオプションはどちらも正しくないようです。レイアウト 間のアニメーションにフックするために似たようなものがあるべきだと思います。
私が達成しようとしていることを達成するための最良の方法を知っている人はいますか?