1

일부 프레임을 이동하는 동안 변형을 애니메이션으로 적용 할 수 없습니다. 애니메이션이있는 블록이 있습니다 :변형 애니메이션을 적용하지 않는 방법은 무엇입니까?

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

그리고 paintPaintInView 메서드를 다시 호출하십시오. 이 방법은 일부 그림 (예 : 선)을 그리고 회전시킵니다. 대상 지점으로 선 이동과 같은 애니메이션 모양을 원합니다. 이제 이동하고 회전합니다.

- (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

관련 문제