2013-02-10 3 views
0

CAKeyFrameAnimation에서 이상한 문제가 있습니다.iOS CAKeyframeAnimation 이상한 이미지 회전

//Inside the selector method of the button 
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
[anim setDelegate:self]; 
anim.path = racetrack.path; 
anim.rotationMode = kCAAnimationRotateAuto; 
anim.repeatCount = 0; 
anim.duration = 10.0; 

[carBtn.layer addAnimation:anim forKey:@"race"]; 

애니메이션은 잘 작동 :

여기에 코드입니다. carBtn (자동차 배경 이미지가있는 단추)을 누르면 문제가 발생합니다. 아무런 이유없이 버튼의 이미지가 180도 회전합니다 (적어도 나를위한 이유는 없음). 나는 애니메이션

carBtn.transform = CGAffineTransformMakeRotation(M_PI); 

의 생성 후 코드 줄에 단추 나 자신을 회전했습니다 ...하지만 (애니메이션이 시작되기 전에) 두 번째 또는 두 가지의 자동차는 초기에 반대 직면 위치. 버튼은 다음과 같이 생성됩니다.

UIImage* car = [UIImage imageNamed:@"car_image"]; 
carBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
[carBtn setFrame:CGRectMake(startPoint.x-45, startPoint.y-33, macchina.size.width, macchina.size.height)]; 
[carBtn setBackgroundImage:car forState:UIControlStateNormal]; 
[carBtn setBackgroundImage:car forState:UIControlStateHighlighted]; 
[carBtn addTarget:self action:@selector(carPressed) forControlEvents:UIControlEventTouchUpInside]; 
[self.view addSubview:carBtn]; 

어떻게 가능합니까? 감사합니다.

답변

0

다음은 작동 방식입니다.보기의 X 축은 경로의 접선을 따라 정렬됩니다.

적용한 회전이 명시 적으로 적용되는 경우 그 사실을 고수 할 것입니다. 그렇지 않으면 완전히 해결 된 솔루션 here을 찾을 수 있습니다.

+0

도움 주셔서 감사합니다. 불행히도 제 경우에는 연결된 솔루션이 작동하지 않습니다. Caleb의 "애니메이션"메서드를 사용하려고했지만 UIView animationWithDuration 블록의 지속 시간이 작동하지 않습니다. 자동차는 길을 10 초로 설정했지만 1 초 이내에 길을 돌아 다니며 이동합니다. 이 문제에 대한 제안 사항이 있습니까? – nicopasso

+0

문제는 음수 x 좌표를 따라가는 내 경로의 방향이라고 생각했습니다. 그래서 나는 양의 x 좌표를 따라 첫 번째 움직임으로 역 경로를 만듭니다. 그러나 문제는 여전히 남아 있습니다. 버튼 (또는 이미지)은 애니메이션이 시작되기 직전에 180 ° 회전합니다. 실망! – nicopasso