使用willTransitionToState在uitableviewcell中为textlabel设置动画

时间:2010-11-23 11:13:29

标签: iphone

当我按下编辑按钮时,我试图在UItableviewcell中设置textlabel的动画。 我试图让它淡出并淡入。 在工作中消失但是当我按下“编辑”时,文本标签消失了,当我按下“完成”时,我完全消失了。

有谁能告诉我它为什么不起作用?

提前致谢

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

2 个答案:

答案 0 :(得分:12)

我注意到在输入willTransitionToState时动画被禁用了。以下修正了它。

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

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

答案 1 :(得分: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];
    }
}