【发布时间】:2015-06-21 18:02:35
【问题描述】:
我正在尝试为 UIButton 设置动画以缩小并移动到视图的中心。此动画在正确运行和未运行之间交替。当它不能正确运行时,它会忽略将 UIButton 发送到中心的调用,而只会将视图缩小到适当的位置。
动画代码:
println("before send box center \(self.box1.center) to middle \(self.view.center)")
UIView.animateWithDuration(0.5, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: {
println("1 send box center \(self.box1.center) to middle \(self.view.center)")
self.box1.center = self.view.center
self.box1.transform = CGAffineTransformMakeScale(0.0001, 0.0001)
println("2 send box center \(self.box1.center) to middle \(self.view.center)")
}, completion: { finished in
println("final box center \(self.box1.center) to middle \(self.view.center)")
})
当动画正确运行时,前两个 println 显示动画之前盒子的中心 CGPoint,最后两个 println 显示视图的中心 CGPoint,现在也是盒子的中心点。
当动画出错时,前两个 println 显示动画之前的盒子中心 CGPoint,第三个 println(在动画块内)显示盒子的中心已设置为视图的中心,但是当我们到达 println在完成块中,盒子已经回到原来的中心点(动画也是如此,将盒子缩小到适当的位置,而不是将其移动到中心)
什么会导致相同的动画代码在跟随其代码和忽略其代码之间切换?
什么会导致动画块中设置盒子中心点的代码在我们到达完成块时被忽略?
没有其他代码可以设置动画或更改我尝试设置动画的框的框架或位置。
我尝试添加 UIViewAnimationOptions.OverrideInheritedCurve 和 . AllowAnimatedContent 和 .BeginFromCurrentState 和 .AllowUserInteraction 希望找到导致问题的故障,但这些都没有对代码的执行方式或动画的显示方式产生任何影响。
【问题讨论】:
标签: xcode swift animation uiview