CGAffineTransform MakeRotation iOS 7 帧更改错误修复

CGAffineTransformMakeRotation iOS 7 frame change bug fix

CGAffineTransformMakeRotation() 在 iOS 7 上尝试将对象(标签、按钮等)旋转到不同于 90、180、360 等的角度时会产生一个奇怪的错误

从 iOS 8 开始,错误消失了。

修复在下面的答案中。

此错误的修复是在 上应用 CABasicAnimation,而不是在 视图 [= 上应用 CGAffineTransformMakeRotation 22=] 的按钮。

出于某种原因,当您将它应用于视图时,它会扰乱框架和自动版式。更多信息 here.

以下是实施此修复的方法:

let animation = CABasicAnimation(keyPath: "transform.rotation")
animation.autoreverses = false
animation.duration = 0.3
animation.fromValue = 0
animation.fillMode = kCAFillModeForwards
animation.removedOnCompletion = false
animation.toValue = 3.14/4    // 45 degrees
self.myButton.layer.addAnimation(animation, forKey: "45rotation")