我正在尝试使用 CGAffineTransformRotate
为 UIButton
的变换制作动画,当它正确执行动画时,它会将按钮向下移动大约 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];
为什么会发生这种转变?该按钮是使用 Interface Builder 创建的,即使我将动画持续时间设置得更长或添加延迟,也会立即发生转换。
最佳答案
我想通了:原来在我的 xib 上选择了“使用自动布局”(它添加了一堆自动约束)在尝试使用转换时搞砸了。关闭它解决了我的问题。
关于ios - CGAffineTransformRotate 在执行旋转之前移动对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12995241/