2010-11-23 19 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

相关问题