1

Как я могу не преобразовать анимацию во время перемещения какого-то кадра? У меня есть блок с анимацией:Как не анимировать трансформацию?

 [UIView animateWithDuration:.2 animations:^{ 
      self.center = [ViewController fitPointToNet:self.center]; 
      [self.delegate repaint]; 
     }]; 

И перекрасить вызов paintInView метод. Этот метод рисует некоторую цифру (например, линию) и поворачивает их. Я хочу, чтобы анимация выглядела как перемещение линии к точке назначения - теперь она перемещается и вращается.

- (void)paintInView:(UIView*)view 
{ 
//some drawing code 
line.transform = CGAffineTransformMakeRotation(M_PI); 
//some drawing code 
} 

Кому-нибудь может помочь?

ответ

1

Вы вызываете метод repaint из блока анимации - поэтому любые анимированные свойства любого вида будут анимированы.

Вы должны вызывать этот метод из блока завершения анимации вместо этого - используйте метод animateWithDuration:animations:completion вместо того, который вы используете сейчас.

Это выполнит преобразование без анимации после завершения анимации.

+0

Это не решение моей проблемы, потому что я хочу анимировать «// некоторый код рисования». Например. paintInView рисует вертикальную линию (в действительности она рисует более сложную фигуру), начиная с (x, y) и преобразует ее в горизонтальную линию. self.center = [ViewController fitPointToNet: self.center] изменяет начальную точку от (x, y) до (x2, y2). Поэтому я хочу анимировать горизонтальную линию перемещения, начиная с (x, y) до (x2, y2). Если я положу преобразование в завершение, я получаю анимированное перемещение вертикальной линии от (x, y) до (x2, y2) и - после того, как перемещение конца строки преобразуется в вертикальное мгновенно. – tch

+0

Я не уверен, что понимаю, но если вы хотите оживить рисованные дорожки и рисунки, вы должны посмотреть на CAShapeLayer. Как правило, вы не рисуете в анимационных методах. – jrturton

+0

О, отлично. Я новичок, поэтому я пробую это :) – tch