CGAffineTransformRotate在执行旋转之前移动对象

时间:2012-10-21 05:23:46

标签: ios

我正在尝试使用UIButton设置CGAffineTransformRotate的变换动画,并且在正确执行动画时,它会将按钮向下移动约15个像素,然后再向左移动。这是执行动画转换的代码:

[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionTransitionNone
                 animations:^{
                     self.addCloseButton.transform = CGAffineTransformRotate(self.addCloseButton.transform, degreesToRadians(45));
                 }
                 completion:nil];

当我反转变换时,它会做同样的事情,除非它在动画之前将其移回原始位置(向上15像素,向右15像素),并且我使用此代码执行此操作:

[UIView animateWithDuration:0.5 delay:0.0 options:UIViewAnimationOptionTransitionNone
                 animations:^{
                     self.addCloseButton.transform = CGAffineTransformIdentity;
                 }
                 completion:nil];

为什么会发生这种转变?该按钮是使用界面构建器创建的,即使我将动画持续时间设置得更高或添加延迟,也会立即发生移位。

2 个答案:

答案 0 :(得分:1)

我想通了:在我的xib上选择了“Use Autolayout”(这会增加一些自动约束)会在尝试使用变换时搞砸了。关掉它解决了我的问题。

答案 1 :(得分:0)

可以在使用自动布局和故事板的同时修复此问题。请参阅我对此问题的回答:https://stackoverflow.com/a/19582959