2012-11-01 51 views
0

嗨我需要爲我放置在每個tableviewcell內的標籤淡出動畫設置淡入淡出效果。這個動畫應該每5秒調用一次。所以我給了cellForRowAtIndexPath中的動畫。但是這個動畫應該持續發生。我試着把它放在nstimer中,但是這個動畫只出現在最後一行出現的標籤上。所以現在我給了cellForRowAtIndexPath。截至目前動畫來爲所有標籤,但它僅發生在調用cellforrowatindexpath.Please引導me.This是我的代碼,我給細胞創造的cellForRowAtIndexPath如何爲放置在uitableviewcel內的標籤重複設置動畫?

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

回答

0

只有設置動畫一次每個標籤的外。這意味着不是在每個cellForRow:調用中,而是僅在單元創建時。或者也可以先刪除動畫,但這有點難看。
[view.layer removeAllAnimations]

1)如果您使用的是iOS 4或更高版本,則應使用基於塊的動畫方法。 (你有什麼希望的),看到animateWithDuration:delay:options:animations:completion:

2)看動畫選項UIViewAnimationOptionRepeat重複動畫

3)另見UIViewAnimationOptionAutoreverse所以你只需要設置淡入一個方向..

這將導致更少的代碼和更好的工作。

+0

我給了這一點,但它仍然是唯一的動畫一次\t [UIView的animateWithDuration:1.0 \t \t \t \t \t \t延遲:0.0 \t \t \t \t \t \t選項: UIViewAnimationCurveEaseInOut \t \t \t \t \t動畫:^ { \t \t \t \t \t \t appointmentDisplayLbl.alpha = 1.0; \t \t \t \t \t} \t \t \t \t \t完成:^(BOOL完成){ \t \t \t \t \t \t appointmentDisplayLbl.alpha = 0.0; \t \t \t \t \t}]; –

+0

請再次閱讀我的答案。你沒有使用我建議的動畫選項。你也*不*需要完成塊。 – calimarkus

0

它重複動畫標籤

-(void)animate 
{ 

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

} 
相關問題