2015-08-17 5 views
0

Я пытаюсь повернуть UIImageView со следующим кодом:Фанки поведение при анимации вращения UIImageView

var x = -((self.needleImage.frame.size.width/2) - 15) //x for rotation point 

UIView.animateWithDuration(5.0, delay: 10.0, options: nil, animations: { 
    var transform = CGAffineTransformMakeTranslation(x, 0) 
    transform = CGAffineTransformRotate(transform, CGFloat(-M_PI_2)) 
    transform = CGAffineTransformTranslate(transform, -x, 0) 
    self.needleImage.transform = transformm 

Конечное положение правильно, но во время анимации/вращения, изображение немного сдвинуты слева, прежде чем оседать в нужном месте.

Я пробовал тот же код с UIView от this, и он этого не делает.

Затем я попробовал обернуть изображение в окне просмотра и повернуть его, но это тоже не помогло.

Я нарисовал цифру точки поворота, чтобы проверить, не находится ли она в нужном месте, но кажется, что все в порядке.

+0

Информация о бонусе: чем больше я поворачиваю, тем больше сдвиг. – ellonde

+0

Возможно, центральная ось не совсем в центре? Это приведет к почти «спирали», которая будет увеличиваться с большими оборотами. – Cole

+0

Можете ли вы подробно остановиться на этом? как я могу это проверить? – ellonde

ответ

0

Я использовал этот фрагмент кода в прошлом, чтобы повернуть просмотр постоянно, но, удалив последнее закрытие, он должен работать, чтобы повернуть изображение на 360 градусов. Это можно отрегулировать, или курс. Сейчас он установлен на 2PI. Вам придется преобразовать угол поворота в радианы.

func animateRotator() { 
     UIView.animateWithDuration(0.5, delay: 0, options: .CurveLinear, animations: {() -> Void in 
      self.rotator.transform = CGAffineTransformRotate(self.rotator.transform, CGFloat(M_PI_2)) 
      }) { (finished) -> Void in 
       self.animateRotator() 
     } 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^