我正在尝试使用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];
为什么会发生这种转变?该按钮是使用界面构建器创建的,即使我将动画持续时间设置得更高或添加延迟,也会立即发生移位。
答案 0 :(得分:1)
我想通了:在我的xib上选择了“Use Autolayout”(这会增加一些自动约束)会在尝试使用变换时搞砸了。关掉它解决了我的问题。
答案 1 :(得分:0)
可以在使用自动布局和故事板的同时修复此问题。请参阅我对此问题的回答:https://stackoverflow.com/a/19582959