我试图让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)")
})
当动画正确运行时,前两个printlns在动画前显示框的中心CGPoint,最后两个printlns显示视图的中心CGPoint,现在也是框'中心点。
当动画混乱时,前两个printlns在动画前显示框的中心CGPoint,第三个println(在动画块内)显示框的中心已设置为视图&# 39; s中心,但是当我们到达完成程序段中的println时,该框已经返回到其原始中心点(并且动画也是如此,将框缩小到位,而不将其移动到中心)
什么可以导致相同的动画代码在跟随代码和忽略代码之间切换?
在我们到达完成区块的时候,动画块中设置方框中心点的代码会被忽略的原因是什么?
没有其他代码动画或更改我试图制作动画的框的框架或位置。
我尝试过添加UIViewAnimationOptions.OverrideInheritedCurve和。 AllowAnimatedContent和.BeginFromCurrentState以及.AllowUserInteraction希望找到引起问题的故障,但这些都没有对代码的执行方式或动画的显示方式产生任何影响。
答案 0 :(得分:0)
我打赌你在Storyboard / XIB中选中了“Use AutoLayout”。使用AutoLayout时,您必须以不同方式进行动画制作。您应该为这些设置添加约束,并将IBOutlet连接到这些约束,而不是更改视图的框架或中心。
然后在动画代码中更改约束的常量值。然后在layoutIfNeeded()
上致电self.view
。