2013-05-22 3 views
6

내 이미지가 화면 왼쪽 상단에서 시작하여 화면 중간에 원래 크기와 위치로 펼쳐지는 UIView 애니메이션을 만들려고합니다. 지금까지이 작업을 별도로 수행 할 수 있었지만 이러한 애니메이션을 결합하려고하면 스케일 애니메이션 만 수행합니다.스케일 및 변환 애니메이션 결합 방법

이 작업을 수행 할 수있는 방법이 있습니까 동시에 크기 조정 및 변환?

내가 그것을 알아 냈
CGAffineTransform setpointTrans = CGAffineTransformMakeTranslation(-200.0f, -200.0f); 
CGAffineTransform setpointScale = CGAffineTransformMakeScale(0.0f, 0.0f); 
_RSEImage.transform = CGAffineTransformConcat(setpointTrans, setpointScale); 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDuration:5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
CGAffineTransform scaleTrans = CGAffineTransformMakeScale(1.0f, 1.0f); 
CGAffineTransform lefttorightTrans = CGAffineTransformMakeTranslation(0.0f,0.0f); 
_RSEImage.transform = CGAffineTransformConcat(scaleTrans, lefttorightTrans); 
[UIView commitAnimations]; 

좋아, 여기에 내가 변경된 것입니다 :

_RSEImage.transform = CGAffineTransformMakeScale(0.0f, 0.0f); 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDuration:5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
CGAffineTransform scaleTrans = CGAffineTransformMakeScale(1.0f, 1.0f); 
CGAffineTransform lefttorightTrans = CGAffineTransformMakeTranslation(200.0f,200.0f); 
_RSEImage.transform = CGAffineTransformConcat(scaleTrans, lefttorightTrans); 
[UIView commitAnimations]; 
+0

나는 당신의 코드를 시험해 보았고, 당신이 달성하고자하는 것을 완벽하게 수행했다 : 확장하고 번역하라 ...이 코드 이전에 RESImage의 원점은 무엇인가? – nzs

+0

x 160 y 242, 내가 뭘 묻고있는 것 같아, 미안해, 이건 내 첫 번째 아이폰 앱이야. 이미지 크기는 161 x 71 –

+0

입니다. 기본적으로이 코드 스 니펫이 작동 중이므로 문제가있는 곳에서는이 코드에서 알기가 어렵습니다.이 방법은 아핀 변환 "병합"을 수행하는 방법입니다. 그래서 당신의 코드의 다른 부분이 어떻게 든 번역을 막거나 보이지 않는 것 같아요. 점차적으로 주석을 달아 함수를 추가하고, 그 시점까지 모든 것이 잘 보이는 것을 확인하십시오. 예 : 0.3f 배율 및 -100f 번역으로 처음 3 줄을 보려면이 스 니펫을 확인하십시오. img? params를 테스트하기 위해 혼자 번역을 추가 한 다음 scale로 병합하십시오. 블록이 더 쉽기 때문에 내 대답도 사용할 수 있습니다. – nzs

답변

2

당신은 iOS4에서이 또한 애니메이션 블록 (사용할 수 있습니다 여기에

는 내가 지금까지 무엇을 가지고) : 여기

[UIView animateWithDuration: 5 
         delay: 0 
        options: (UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction) 
       animations:^{_RSEImage.center = CGPointMake(300, 300) ; _RSEImage.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2.0, 2.0);} 
       completion:^(BOOL finished) { } 
]; 

관련 공식 문서 : link

좋은 가이드 : link

도움이 되길 바랍니다.

+0

이미지 크기를 두 배로 조정 했는데도 이미지를 왼쪽 위 모서리에서 가운데로 이동하지 않았습니다. –

+0

sthing 이상한 일이 ... ;-) _RSEImage의 유형은 무엇입니까?보기에 코드를 추가하는 방법을 공유 할 수 있습니까? 또는 _RSEImage와 관련된 다른 코드가 있습니까? – nzs

+0

나는 그것을 알아 내고 나의 질문을 편집했다, 나는이 블록을 배울 것이다, 훨씬 쉬워 보인다. 도와 줘서 고마워. –