【发布时间】:2018-03-16 01:47:54
【问题描述】:
我正在为 UIView (alpha) 属性设置动画,我希望在动画完成后可以将其从超级视图中移除。
-(void) hideOverlayView
{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[topView setAlpha:0];
[UIView commitAnimations];
}
一种选择是使用带有延迟选项的 performSelector,但有更紧凑的方法吗?
更新1:
为什么这段代码会立即删除视图?
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelegate:topView];
[UIView setAnimationDidStopSelector:@selector(removeFromSuperview)];
[topView setAlpha:0];
[UIView commitAnimations];
我应该提一下,我首先制作的是淡入动画,然后是淡出动画。上面是淡出代码,它会立即移除 UIView 而不是产生淡出效果。
【问题讨论】:
-
我遇到了同样的问题,视图被立即删除。我正在使用块,代码在 dispatch_async 中。这似乎是一个错误。然后我像您的代码一样使用 [UIView beginAnimations 进行切换,它可以正常工作。虽然我使用了自己的选择器,而不是 UIView 类中的 removeFromSuperview 选择器。
标签: ios