Я пытаюсь повернуть с анимацией UIImageView на 5 ° при каждом нажатии. Однако каждый раз, когда я нажимаю на него, кажется, что он возвращается к исходному углу и начинает анимацию оттуда, а не с того места, где он уже был. Я понимаю, что преобразования должны быть объединены в цепочку, поэтому я делаю это, однако это все еще не работает:
UIView.animate(withDuration: 1.0, animations: {
self.imgView.transform = self.imgView.transform.concatenating(CGAffineTransform(rotationAngle: CGFloat.pi/180*5))
}, completion: nil)
Я нашел многообещающую опцию в варианте функции animate, но это заставляет ее выглядетьеще хуже (как-то даже искажает изображение):
UIView.animate(withDuration: 1.0, delay: 0.0, options: .beginFromCurrentState, animations: {
self.imgView.transform = self.imgView.transform.concatenating(CGAffineTransform(rotationAngle: CGFloat.pi/180*5))
}, completion: nil)
Что я делаю не так?
Кстати, у представления изначально есть преобразование масштаба и преобразования, которое устанавливается один раз в viewDidLoad:
imgView.frame = CGRect(x: 0, y: view.frame.maxY-view.frame.midX, width: view.frame.maxX, height: view.frame.maxX)
imgView.transform = CGAffineTransform.identity.scaledBy(x: 14, y: 14).translatedBy(x: 0, y: 150)
Я упоминаю об этом на всякий случай, если проблема имеет какое-либо отношение к этой части.