Направление вращения ios UIImageView по-быстрому с переменной степенью по часовой стрелке - PullRequest
0 голосов
/ 18 марта 2019

Я вращаю изображение через этот код

UIView.animate(withDuration: 2) {

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

    }

Проблема в том, что оно вращается по кратчайшему пути.Я хочу всегда вращение по часовой стрелке и степень вращения является переменной. это и это не дает решения.

Ответы [ 2 ]

2 голосов
/ 18 марта 2019

Просто разделите его на две анимации, если угол больше 180 °.

1 голос
/ 18 марта 2019

Вы можете повернуть свое изображение в соответствии с вашими требованиями с помощью 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()
}
...