2012-02-22 5 views
1

나는 코코아를 사용하여 간단한 애니메이션을 수행하려고합니다. 한 버튼을 누르면 이미지가 y 축 위로 넘기고 다시 누르면 다시 뒤집습니다. 다른 버튼은 윈도우가 x 축을 뒤집어 동일한 방식으로 뒤집어 야합니다. 이미지의 코드는 작동하지만 창은 첫 번째 프레스를 수직으로 뒤집지만 두 번째 프레스는 뒤집지 않습니다. y 축에간단한 ios 애니메이션 : 윈도우 및 리버스 회전

이미지 x 축에

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 

[pic.layer setValue:[NSNumber numberWithInt:3.14159] forKeyPath:@"transform.rotation.y"]; 

[UIView commitAnimations]; 

창 나는 문제가 코드가 거의 동일하기 때문에 문제를 찾는 데

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 

[window.layer setValue:[NSNumber numberWithInt:3.14159] forKeyPath:@"transform.rotation.x"]; 

[UIView commitAnimations]; 

. 덕분에 도움을 주실 수 있습니다.

+0

블록 기반 애니메이션 방법을 대신 사용하십시오. 이것은 귀하의 질문에 대한 답변이 아니며 일반적인 조언은 – Avi

+0

입니다.하지만이 특별한 연습을 위해 기본적인 애니메이션 방법을 사용해야합니다. 고마워요 비록 – Daisy

+0

당신이 정적으로 변환 값을 설정하기 때문에 나는 그 이미지 반전에 다소 놀랐습니다. 다음과 같이하면 어떻게됩니까? object.transform = CGAffineTransformRotate (object.transform, M_PI); – Avi

답변

2

약간 다른 형식으로 작동하는 코드를 얻을 수있었습니다. 이 회전 명령을 가지고 때마다 내가 무엇을 말할 수에서

CATransform3D flip = CATransform3DMakeRotation(M_PI, 1.0, 0.0, 0.0); 
if (CATransform3DEqualToTransform(window.layer.transform, flip)) 
{ 
    flip = CATransform3DMakeRotation(M_PI, 0.0, 0.0, 0.0); 
} 


[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 

window.layer.transform = flip; 

[UIView commitAnimations]; 

은 단지 원래의 상태 창을 고려했다. 새로운 명령이 뒤집을 때마다 이미 요청 된 위치에 있다는 것을 알았고 아무것도하지 않았습니다. 내가 그것을 깨달았을 때, 나는 단지 그것을 정상으로 되 돌리는 명령을 내 보내야 만했다. 제 질문의 코드가 x 축이 아닌 x가되는 이유는 아직도 저에게 신비입니다.

관련 문제