0

テーブルビューの各セルに、ユーザーが右からスライドできるバーが必要です。バーにはアイコンを配置する予定です。したがって、これを行うために、UITableViewCell をサブクラス化しました。セルに drawRect を実装し、セルにグラデーションと背景色を既に描画しています。そこから、CALayer を作成し、フレームと背景色を指定して、サブレイヤーとして Views subLayers 配列に追加します。私はそれをすべて行うことができ、各 UITableViewCell に私のレイヤーを表示します。

セルにタッチイベントを追加して、ユーザーがセルに触れたときに検出できるようにし、テストのためにユーザーがスワイプするとCALayerが広くなるようにしました。しかし、問題は、UITableView がスクロールして CALayer が拡張されたセルを再利用すると、CALayer が再作成されないことです。私が試してみました

[myLayer setNeedsDisplay]

デリゲートの drawLayer:inContext メソッドを使用しましたが、呼び出されません。UITableViewController のセルで setNeedsDisplay を呼び出すことも試みましたが、再描画が発生することを期待していますが、機能しません。

何が欠けているのかわかりません。CoreGraphics と CoreAnimation は初めてです。CoreAnimation Developers Guide を読みましたが、何か足りないと思います。どんな助けでも素晴らしいでしょう。

4

1 に答える 1

0

CALayer にクローズド トランスフォームとオープン トランスフォームを追加しました。テーブル ビュー コントローラーの scrollViewWillBeginDragging で、表示されているすべてのセルを反復処理し、閉じた変換を適用してメニューをリセットします。

于 2010-04-02T12:21:45.233 に答える