1

コレクションビューの外にある別のビューにドラッグ/ドロップできるビューを含む多数のセルを含む UICollectionView があります。このプロセスは正常に機能します。ただし、ドラッグされたビューが新しい場所にドロップされると、スーパービューから削除する前に、ドラッグビューをフルサイズにスケーリングしてからゼロに戻すことで、ドロップをアニメーション化したいと考えています。これは、他のオブジェクトをドラッグしているときにアプリの他の領域で機能しますが、コレクション ビューに関係するのはこれだけです。

[UIView animateWithDuration:0.375
                 animations:^{ dragView.transform = CGAffineTransformMakeScale (1.0f, 1.0f); dragView.transform = CGAffineTransformMakeScale(0.0f, 0.0f); }
                 completion:^(BOOL finished) {  [dragView removeFromSuperview]; }  ];   

完了ブロックを使用しないと、おそらくアニメーションが終了する前にビューが削除されるため、アニメーションは失敗します。ただし、完了ブロックを使用する場合、アニメーションが完了すると、コレクション ビューをスクロールする代わりに、ビュー コントローラーで使用されるパン ジェスチャ レコグナイザーに後続のパン ジェスチャ (コレクション ビューのスクロールに使用) が渡されます。その結果、コレクション ビューはアニメーション後に「ロックアップ」されたように見えます。完了ブロックを削除すると、その後ジェスチャー認識の問題は発生しませんが、アニメーションも機能しません。

アニメーションの後にコレクション ビューで userInteractionEnabled=YES を設定しようとしましたが、役に立ちません。

助言がありますか?ティア

4

2 に答える 2

1

ああ、同じタイプの 2 つの同時アニメーションに何を期待しますか? 多分それは解決策ですか?

最初のアニメーション呼び出し:

[UIView animateWithDuration:0.375
                 animations:^{ dragView.transform = CGAffineTransformMakeScale (1.0f, 1.0f); }
                 completion:^(BOOL finished) {  /*call the second animation*/ }  ];

2 番目のアニメーション呼び出し:

//second animation
[UIView animateWithDuration:0.375
                 animations:^{ dragView.transform = CGAffineTransformMakeScale(0.0f, 0.0f); }
                 completion:^(BOOL finished) {  [dragView removeFromSuperview]; }  ]; 
于 2013-05-06T07:39:13.740 に答える