0

セルのimageViewプロパティを1つずつ飛ばすにはどうすればよいですか?

私は今、それらを飛ばすことができますが、一度にしかできません。

そして、このようなことをすることはパフォーマンスにとって良いことですか?

ありがとうございました!

4

3 に答える 3

4

を使用しindexPath.rowて遅延を計算します。

float animationDelay = 0.2f;
[UIView animateWithDuration:0.3f 
                      delay:animationDelay * indexPath.row 
                    options:0 
                 animations:^{
            cell.imageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
        }  completion:^{}];

これにより、すべての行がその上の行に比べて 0.2 秒遅れます。もちろん、これは最初にテーブルをロードするときにのみ機能しますが、これはあなたがアニメーション化しようとしているものだと思いますか? スクロールを開始して新しいセルが読み込まれると、おそらく遅延をゼロに設定する必要があります。そうしないと、画像が表示されるまでに時間がかかります。

これを実現するには、最初に (またはメソッドで)に設定されているBOOLivarを導入することをお勧めします。次に、テーブルが初めて表示されるときにそれを設定できます。セルを作成するときは、最初にこの変数をチェックして、遅延を追加する必要があるかどうかを確認する必要があります。loadingTheFirstTimeYESinitawakeFromNibNO

于 2012-09-13T15:09:21.653 に答える
2

私はあなたがここにいると思っていましたcellForRowAtIndexPath:。それを使用してアニメーションを変更します:

[UIView animateWithDuration: 3.0 
                      delay: indexPath.row
                    options: UIViewAnimationCurveLinear 
                 animations: ^{
                     cell.imageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
                 } 
                 completion:^(BOOL finished) {

                 }];

アニメーションは 1 秒間隔で読み込まれます。この関数に参加していない場合は、作成時にセルにタグを設定し、そのタグを遅延に入れます。

于 2012-09-13T15:10:09.613 に答える
0

おそらく、すべてのセルを実行し、ループを介して毎回アニメーションを実行する for ループがあるメソッドを設定しますか? パフォーマンスに関しては、私にはわかりません。特にセルが多い場合は、パフォーマンスが向上するとは思いませんが、いつでも試して調べることができます! :)

于 2012-09-13T15:10:08.057 に答える