Changes to UIView before transitionWithView animation are ignored
我有一个包含两个UIImageView的UIView(一个是卡通,另一个是它的特殊阴影)。 " self "是UIView对象。
在水龙头上,我想通过卷曲效果从其超级视图中删除UIView。效果很好。
但是在卷曲之前,我想删除自定义的阴影UIImageView,以使我的阴影不会与卷曲效果阴影一起卷曲。在动画之前,无法从UIView中删除UIImageView。
我的代码:
1 2 3 4 5 6 | [myShadow setImage:nil]; [UIView transitionWithView:self duration:1.0 options:UIViewAnimationOptionTransitionCurlUp animations:^ { [self setHidden:YES];} completion:nil]; |
这不会删除myShadow。当我注释掉transitionWithView myShadow时,就很好了,但是-当然-之后没有动画。
使用setImage:nil之后的动画不会显示任何效果。我还尝试了[myShadow removeFromSuperview]和[myShadow版本],也什么也没做。
我尝试了很多事情,并进行了3个多小时的谷歌搜索。例如我试过
1 | [self setNeedsDisplay]; |
或
1 | animations:^ { [myShadow setImage:nil]; [self setHidden:YES];} |
我玩过这个游戏,但没有让myShadow在动画之前消失。
我该怎么办?谢谢。
移除阴影时,我会尝试以下操作:
1 2 3 4 5 6 7 8 9 10 11 | [ CATransaction begin ]; [ CATransaction setValue: [ NSNumber numberWithBool: YES ] forKey: kCATransactionDisableActions ]; [ myShadow setImage: nil ]; [ CATransaction commit ]; [ UIView transitionWithView: self duration: 1.0 options: UIViewAnimationOptionTransitionCurlUp animations: ^ { [ self setHidden: YES ]; } completion: nil ]; |
这应该避免在过渡发生时阴影动画消失的任何问题。如果那仍然不起作用,那么您可以在将阴影图像设置为nil后尝试添加它:
1 | [ self displayIfNeeded ]; |
这代替了[self setNeedsDisplay]。 setNeedsDisplay不会立即导致任何事情发生,而只是将视图标记为需要显示,这将在以后发生。 displayIfNeeded将导致视图立即绘制。
可能只需将setNeedsDisplay更改为displayIfNeeded即可。