当我按下编辑按钮时,我试图在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];
}
}
答案 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];
}
}