如何为放置在uitableviewcell内的标签重复设置动画

时间:2012-11-01 12:51:53

标签: ios animation uitableview uilabel

嗨我需要为我放在每个tableviewcell里面的标签设置淡出淡出动画。此动画应每隔5秒调用一次。所以我在cellForRowAtIndexPath中给出了动画。但是这个动画应该连续发生。我尝试将它放在nstimer中,但该动画只出现在最后一行中的标签上。所以现在我给了cellForRowAtIndexPath。到目前为止,所有标签都会出现动画,但只有在调用cellforrowatindexpath时才会出现。请指导我。这是我在cellofrowatindexpath创建单元格之外的代码

        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];

2 个答案:

答案 0 :(得分:0)

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

1)如果您使用的是iOS 4或更高版本,则应使用基于块的动画方法。 (您希望如此),请参阅animateWithDuration:delay:options:animations:completion:

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

3)另请参阅UIViewAnimationOptionAutoreverse,这样您只需要在一个方向上设置淡入淡出..

这将导致更少的代码和更好的工作。

答案 1 :(得分:0)

它在标签中重复动画

-(void)animate
{

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

}