Xcode Swift UIView.animateWithDuration有时忽略动画代码

Xcode Swift UIView.animateWithDuration有时忽略动画代码,xcode,swift,animation,uiview,Xcode,Swift,Animation,Uiview,我正在尝试设置UIButton的动画,以缩小并移动到视图的中心。此动画在正确运行和不正确运行之间交替。当它不能正确运行时,它会忽略将UIButton发送到中心的调用,并且只在适当的位置收缩视图 动画代码: println("before send box center \(self.box1.center) to middle \(self.view.center)") UIView.animateWithDuration(0.5, delay: 0.0, options: UIViewAni

我正在尝试设置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显示动画之前长方体的中心点,第三个println(在动画块内)显示长方体的中心已设置为视图的中心,但当我们到达完成块中的println时,长方体已返回其原始中心点(动画也会这样做,在不将长方体移动到中心的情况下将长方体收缩到位)

是什么原因导致相同的动画代码在遵循代码和忽略代码之间切换?

当我们到达完成块时,什么会导致动画块中设置框的中心点的代码被忽略?

没有其他代码可以设置动画或更改我试图设置动画的框的帧或位置

我尝试添加UIViewAnimationOptions.OverrideInheritedCurve和.AllowAnimatedContent和.BeginFromCurrentState和.AllowUserAction,希望找到导致问题的小故障,但这些都没有对代码的执行方式或动画的显示方式产生任何影响。

我打赌您有“使用自动布局”已检入序列图像板/XIB。使用“自动布局”时,您必须以不同的方式制作动画。您应该为这些设置添加约束,并将这些约束连接起来,而不是更改视图的框架或中心

然后在动画代码中更改约束的常量值。然后在
self.view
上调用
layoutifneed()