ios – 动画结束后从超级视图中删除UIView

前端之家收集整理的这篇文章主要介绍了ios – 动画结束后从超级视图中删除UIView前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在动画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而不是淡出效果.

解决方法

直接从 UIView docs

[UIView animateWithDuration:0.2
     animations:^{view.alpha = 0.0;}
     completion:^(BOOL finished){ [view removeFromSuperview]; }];

或者在您的具体情况中:

[UIView animateWithDuration:1.0
    animations:^{topView.alpha:0.0;}
    completion:^(BOOL finished){ [topView removeFromSuperview]; }];

猜你在找的iOS相关文章