ios UIImageView旋转方向以顺时针方向以可变程度快速旋转

时间:2019-03-18 09:15:42

标签: ios animation rotation direction

我正在通过此代码旋转图像

UIView.animate(withDuration: 2) {

        self.blueNeedleImageView.transform = CGAffineTransform(rotationAngle: CGFloat(myDegreeValue * Double.pi / 180))

    }

问题是它以最短的路径旋转。我希望始终顺时针旋转并且旋转度是可变的。 thisthis没有提供解决方案。

2 个答案:

答案 0 :(得分:2)

如果角度大于180°,只需将其分为两个动画即可。

答案 1 :(得分:1)

您可以在CoreAnimation的帮助下根据需要旋转图像,如下所示:

let angle = myDegreeValue
if let n = NumberFormatter().number(from: angle) {
    let floatAngle = Double(truncating: n)
    CATransaction.begin()
    let rotationAnimation = CABasicAnimation(keyPath: "transform.rotation.z")
    rotationAnimation.byValue = NSNumber(value: floatAngle * (Double.pi / 180))
    rotationAnimation.duration = 2
    rotationAnimation.isRemovedOnCompletion = true

    CATransaction.setCompletionBlock {
          self.blueNeedleImageView.transform = CGAffineTransform(rotationAngle: CGFloat(floatAngle * (Double.pi / 180)))
    }
    self.blueNeedleImageView.layer.add(rotationAnimation, forKey: "rotationAnimation")
    CATransaction.commit()
}