在动画完成之前调用 UIView 动画完成
Posted
技术标签:
【中文标题】在动画完成之前调用 UIView 动画完成【英文标题】:UIView animate finished called before animation finished 【发布时间】:2017-01-02 12:48:41 【问题描述】:我正在尝试创建一个animation
,其中视图首先向下动画,然后从超级视图中删除,我的代码如下所示:
UIView.animate(withDuration: 5, delay: 5, options: .allowAnimatedContent, animations:
NSLog("Animation started")
self.scrollView.setContentOffset(CGPoint(x:0,y:-500), animated: true)
, completion: (finished: Bool) in
if finished
NSLog("Animation stopped")
self.view.removeFromSuperview()
)
由于持续时间是5
,所以应该在 5 秒后调用完成,否则我错了?
在这种情况下,finished 在动画完成并删除视图之前被调用,并且动画显然根本没有显示,因为视图已被删除。
这里是NSLog
2017-01-02 17:39:37.649 [1581:26706] Animation started
2017-01-02 17:39:37.652 [1581:26706] Animation stopped
finished 在不到一秒的时间内被调用
【问题讨论】:
【参考方案1】:尝试将setContentOffset:
函数animated
设置为false
UIView.animate(withDuration: 5, delay: 5, options: .allowAnimatedContent, animations:
NSLog("Animation started")
self.scrollView.setContentOffset(CGPoint(x:0,y:-500), animated: false)
, completion: (finished: Bool) in
if finished
NSLog("Animation stopped")
self.view.removeFromSuperview()
)
【讨论】:
以上是关于在动画完成之前调用 UIView 动画完成的主要内容,如果未能解决你的问题,请参考以下文章
MonoTouch - UIView.Animate 完成回调未在按钮 touchUpInside 委托内调用