在Swift 3中将UIImage顺时针旋转270度的正确方法是什么?

Zub*_*ala 4 ios swift swift3

UIView.animate(withDuration:2.0, animations: {

         self.imageView.transform = CGAffineTransform(rotationAngle: (270 * CGFloat(2 * Double.pi)) / 360.0)
    })
Run Code Online (Sandbox Code Playgroud)

这是逆时针动画,我希望动画顺时针旋转。

NSA*_*Adi 7

顺时针旋转270度...

UIView.animate(withDuration:2.0, animations: {
            self.sampleView.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi))
            self.sampleView.transform = CGAffineTransform(rotationAngle: CGFloat(Double.pi * 3 / 2))
        })
Run Code Online (Sandbox Code Playgroud)

Core Animation将始终采取最短的路线来使旋转工作。因此,如果您的物体是笔直的并且旋转了90度(弧度:pi / 2),它将顺时针旋转。如果您的对象是笔直的并且旋转了270度(弧度:pi + pi / 2 = 3pi / 2),则它会逆时针旋转,因为这是最小的动画。

因此,我们首先需要旋转pi弧度(从0-> pi,0-> 180),然后旋转另一个pi / 2弧度(pi-> 3pi / 2,180-> 270)以执行完整旋转。

注意事项:

  • 要以大于180度的角度旋转,您需要执行2个变换,一个变换用于第一个180度,然后另一个变换。
  • 要旋转大于360度的角度(如半圈),您将需要执行三个变换。
  • 要旋转奇数角(假设为195度),请先旋转180度,然后再旋转15度。
  • 在执行旋转时,您需要将度数转换为弧度。