0

こんにちは私は各テーブルビューセル内に配置したラベルのフェードインフェードアウトアニメーションを設定する必要があります。このアニメーションは5秒ごとに呼び出す必要があります。だから私はcellForRowAtIndexPath内にアニメーションを与えました。しかし、このアニメーションは継続的に発生するはずです。nstimerに入れてみましたが、そのアニメーションは最後の行にあるラベルに対してのみ発生します。だから今私はcellForRowAtIndexPathの中に与えました。現在、アニメーションはすべてのラベルで使用されていますが、cellforrowatindexpathを呼び出しているときにのみ発生します。ガイドしてください。これは、cellforrowatindexpathのセル作成の外部で提供したコードです。

        UILabel *rewardPtLabel = (UILabel*)[cell.contentView viewWithTag:kRewardlabelTag];
    rewardPtLabel.text = [NSString stringWithFormat:@"%@ %@",[appRecord objectForKey:@"ProductReward"],@""];//rewardPoints

     rewardPtLabel.alpha = 0;
     rewardPtLabel.textColor=[UIColor redColor];
     [UIView beginAnimations:nil context:nil];
     [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
     [UIView setAnimationDuration:2];
     rewardPtLabel.alpha = 1;
     [UIView commitAnimations];

     rewardPtLabel.textColor=[UIColor greenColor];
     [UIView beginAnimations:nil context:nil];
     [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
     [UIView setAnimationDuration:2];
     rewardPtLabel.alpha = 0;
     [UIView commitAnimations];
4

2 に答える 2

0

ラベルごとに 1だけアニメーションを設定します。つまり、すべての cellForRow: 呼び出しではなく、セルの作成時のみです。または、代わりに前にアニメーションを削除しますが、それは少し醜いです.
[view.layer removeAllAnimations]

1) iOS 4 以降を使用している場合は、ブロック ベースのアニメーション メソッドを使用する必要があります。(あなたが望んでいること)、ほらanimateWithDuration:delay:options:animations:completion:

UIViewAnimationOptionRepeat2)繰り返されるアニメーションのアニメーション オプションを確認します。

3) またUIViewAnimationOptionAutoreverse、フェードを一方向に設定するだけでよいことも参照してください。

これにより、コードがはるかに少なくなり、より適切に機能します。

于 2012-11-01T13:01:00.420 に答える
0

ラベルでアニメーションを繰り返します

-(void)animate
{

[UIView animateWithDuration:1
                          delay:0
                        options: UIViewAnimationCurveEaseOut
                     animations:^{
                        //set animations
                     } 
                     completion:^(BOOL finished){
[self performSelector:@selector(animate) withObject:frdctrl afterDelay:1];
                     }];

}
于 2012-11-02T10:52:39.263 に答える