3

UITableView があり、セルを削除するカスタムの方法が必要です。誰かがそれをスワイプすると、セルが横に横に移動して消えます。

iOS 7 のマルチタスク メニュー ( http://movies.apple.com/media/us/ios/ios7/f34c5445-5a9c-4b3a-9556-8efe89147559/shared_multitasking/shared_multitasking_2x.mp4 ) とまったく同じですが、垂直にスワイプする代わりに、水平だろう。

誰もそれを行う方法を知っていますか? スワイプを検出して、セルのフレームを 1 秒のアニメーションで変更する必要がありますか? または、お勧めの UITableViewCell の素敵なサブクラスはありますか?

4

1 に答える 1

0

これを行う方法の非常に基本的な例をまとめて、https ://github.com/NSPostWhenIdle/MMSwipeToDeleteCollection に投稿しました。これをプロジェクトにドラッグ アンド ドロップして動作させることができるとは思わないでください。

このようなものを作成するための基本的なアイデアは、セルにジェスチャを追加する UICollectionViewCell のサブクラスから始まります。私の例では、私は怠け者なのでスワイプ ジェスチャを使用しました :p と、そのパン ジェスチャとの間に競合があるため、パン ジェスチャ (最終製品で必要になります) の設定にはより多くのオーバーヘッドが伴います。コレクション ビューのスクロール ビューでのパン ジェスチャ。

そこからは基本的に順風満帆。ジェスチャ レコグナイザが呼び出されると、セルが画面上部にアニメーション表示されます。これをパン ジェスチャで設定する場合は、セルをドラッグして完了時に上下にアニメーション化するように設定する必要がありますが、私のスワイプの例では、セルは (4 インチ シミュレータの) すぐ上に移動します。 、私は静的な値を使用しました)。

あとは、クリーンアップを行うだけです。セルが画面から出たら、データソースから安全に削除してから、コレクション ビューから削除できます。(私は通知センターを使用してコレクションビューに警告を出しましたが、おそらくプロトコルを作成する必要があります)これで発生した唯一の問題は、在庫削除アニメーションの一部としてフェードアウトしながらセルがアニメーション化されることでした. 画面を離れた後にアルファを 0 に設定すると、この問題は解決します。

于 2013-08-19T15:33:03.337 に答える