0

嗨,我需要为放置在每个 tableviewcell 内的标签设置淡入淡出动画。此动画应每 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

每个标签只设置一次动画。这意味着不是在每个 cellForRow: 调用中,而是仅在单元格创建时。或者之前删除动画,但这有点难看。
[view.layer removeAllAnimations]

1) 如果您使用的是 iOS 4 或更高版本,您应该使用基于块的动画方法。(你希望是什么),看animateWithDuration:delay:options:animations:completion:

2)查看UIViewAnimationOptionRepeat重复动画的动画选项

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 回答