我希望在指定的持续时间之后调用此UIView动画的完成闭包,但它似乎是立即触发......
UIView.animateWithDuration(
Double(0.2),
animations: {
self.frame = CGRectMake(0, -self.bounds.height, self.bounds.width, self.bounds.height)
},
completion: { finished in
if(finished) {
self.removeFromSuperview()
}
}
)
还有其他人经历过这个吗?我已经读过其他人使用中心而不是框架来移动视图更成功,但是我也遇到了同样的问题。
答案 0 :(得分:10)
对于遇到此问题的任何其他人,如果有任何事情正在中断动画,则立即调用完成闭包。在我的情况下,这是由于与自定义segue展开的视图控制器的模态转换略有重叠。使用delay
的{{1}}部分对我没有任何影响。我最终使用GCD将动画延迟了几分之一。
UIView.animateWithDuration(0.3, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations:{}
答案 1 :(得分:0)
我最终通过将动画从hitTest()
移动到touchesBegan()
UIView
来解决了这个问题