2010-11-23 29 views
6

我想在按下編輯按鈕時在UItableviewcell中設置文本標籤的動畫效果。 我試圖讓它淡出並淡入。 在作品中漸隱,但是當我按'編輯'時,文本標籤消失,當我按下'完成'時,我完全褪色。在uitableviewcell中使用willTransitionToState生成文本標籤

誰能告訴我爲什麼它不工作?

在此先感謝

- (void)willTransitionToState:(UITableViewCellStateMask)state { 
[super willTransitionToState:state]; 

if ((state & UITableViewCellStateEditingMask) || (state & UITableViewCellStateShowingDeleteConfirmationMask)) { 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    label.alpha = 0.0; 
    [UIView commitAnimations]; 
} 
} 

- (void)didTransitionToState:(UITableViewCellStateMask)state { 
[super didTransitionToState:state]; 

if (!(state & UITableViewCellStateEditingMask) && !(state & UITableViewCellStateShowingDeleteConfirmationMask)) { 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.5]; 
    label.alpha = 1.0; 
    [UIView commitAnimations]; 
} 
} 

回答

6

從一切我讀過我想肯定的willTransitionToState是要走的路。如果使用didTransitionToState,它甚至可以很好地工作,儘管在正常編輯轉換完成後轉換開始。

事實證明我想你想使用setEditing

- (void)setEditing:(BOOL)editing animated:(BOOL)animate 
{ 
    [super setEditing:editing animated:animate]; 

    if(editing) { 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.3]; 
     label.alpha = 0.0; 
     [UIView commitAnimations]; 
    } else { 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:0.3]; 
     label.alpha = 1.0; 
     [UIView commitAnimations]; 
    } 
} 
+1

+1也適用於MonoTouch。 – tomfanning 2011-04-11 14:13:42

12

我注意到進入willTransitionToState當動畫被禁用。以下修復它。

- (void)willTransitionToState:(UITableViewCellStateMask)state 
{ 
    [super willTransitionToState:state]; 

    //Should be enabled by default...but apparently not 
    [UIView setAnimationsEnabled:YES]; 
... 
} 
+3

你不知道他們爲什麼會禁用動畫,所以你可能想在動畫塊之前保存+ [UIView areAnimationsEnabled]返回的值,並在方法結尾恢復值。 – Alej 2011-11-11 05:49:11

相關問題