したがって、テーブルビューセルでのパンの非常に優れた実装があります。私は基本的に panGestureRecognizer を使用してセルを画面外に移動し、tableViewCell の下に別のビューを表示します。これはうまくいっています。tableViewCell をパンすると、基本的にその下に 5 つのボタンが表示されます。
私の目標は、tableviewcell が動いているときに 5 つのボタンをアニメーション化することです。例えば、
| | 1 | 2 | 3 | 4 | 5|
スワイプしてセルを右に移動し、十字ボタン 1 を使用している場合、ボタンが飛び出してユーザーに表示されるようにアニメーション化します。2 と交差している場合、2 はアニメーションで飛び出し、ユーザーに表示されます。ボタン 5 にいるときは、すべてのボタンが既にポップされており、ユーザー アクションの準備ができています。
私はこれをやっています
//Scale Animation
CABasicAnimation *scaleAnim = [CABasicAnimation animationWithKeyPath:@"transform"];
scaleAnim.duration = 0.3;
scaleAnim.toValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
scaleAnim.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1,0.1, 1.0)];
scaleAnim.removedOnCompletion = YES;
[view.layer addAnimation:scaleAnim forKey:nil];
**
私の目標 :
**
そのため、パン ジェスチャの途中でそれを閉じる (左に移動する) ことにした場合、ボタンがポップインし、ユーザーが使用できなくなります。
また、セルを移動すると、ボタンが徐々に拡大され、ユーザーが使用できるようになります。したがって、基本的にセルの原点を渡し、数学を使用して、ボタンの原点と幅に基づいてボタンのスケールを計算する必要があります (かなり簡単です)。
if (CGRectIntersectsRect(button.frame, self.movingCell.frame))
{
CGFloat xScale = cellTranslation - xOriginForButton;
[self popOutAnimate:button withScale:xScale/ (xWidthForButtons + xSpaceBetweenButtons)];
}
しかし、セルを非常に速く動かすと問題が発生します。ビューはセルの動きのすべての変更を取得せず、半分アニメーション化された状態でスタックします。
ロジックを正しく把握していない気がします。実装全体は、Sparrow iPhone メール アプリに似ています。セルをパンすると、セルの移動に合わせてボタンがアニメーションで表示されます。スパローを使ったことがない方へ。パン ジェスチャは 1:25 で確認できますhttps://www.youtube.com/watch?v=XLX6XV0SbWI&t=1m25s
ロジックは正しいですか?何か不足していますか?
どんな助けでも大歓迎です。