4

したがって、テーブルビューセルでのパンの非常に優れた実装があります。私は基本的に 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

ロジックは正しいですか?何か不足していますか?

どんな助けでも大歓迎です。

4

2 に答える 2

-1

ここですべての回答を見つけることができます https://github.com/spiilliams/sparrowlike :) 非常にしっかりとコメントされており、よりモジュール化されます..これを編集してみてください。

于 2013-04-01T05:21:38.913 に答える