2009-06-15 3 views
3

UIImageView (1)가 사라지고 (2) 움직이며, (3) 화면에서 벗어나도록 다단계 애니메이션을 만들려고합니다.다단계 UIImageView 애니메이션을 만드는 방법은 무엇입니까?

1 단계 만 작동하는 것 같습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

[UIView setAnimationDelegate:self]; 

의 대리인으로 (전무로 설정)을 직접 설정을 해제하는 것이 좋습니다 것 :

// FIRST PART - FADE IN 
-(void)firstAnim 
{ 
    // 'sprite' is a UIImageView 
    [sprite setAlpha:0.1f]; 
    [UIView beginAnimations:@"anim1" context:NULL]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [UIView setAnimationDuration:0.25]; 
    [UIView setAnimationDidStopSelector:@selector(secondAnim)]; 
    [UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
    [sprite setAlpha:1.0f]; 
    [UIView commitAnimations]; 
} 


// SECOND PART - MOVE 
-(void)secondAnim 
{ 
    [UIView beginAnimations:@"anim2" context:NULL]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationDidStopSelector:@selector(thirdAnim)]; 
    [UIView setAnimationCurve:UIViewAnimationCurveLinear]; 
    sprite.frame = CGRectMake(170, 184, 20, 20); 
    [UIView commitAnimations]; 
} 

// THIRD PART - SLIDE OFF SCREEN 
-(void)thirdAnim 
{ 
    [UIView beginAnimations:@"anim3" context:NULL]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    sprite.frame = CGRectMake(170, 420, 20, 20); 
    [UIView commitAnimations]; 
} 

답변

4

당신은 애니메이션 대리인으로 자신을 설정하는 전화를 추가 할 필요가 : 여기 코드는 마지막 애니메이션 블록

+0

감사 사용을 설정합니다. 나는 또한 setAnimationDidStopSelector 행을 가져야했다 : [UIView setAnimationDidStopSelector : @selector (secondAnim : finished : context :)]; – cannyboy

4

귀하의 질문에 대한 완벽한 솔루션은 다음과 같습니다

1) 애니메이션 위임

2

) 올바른 선택 및 방법 서명을

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:.5]; 
[UIView setAnimationDelegate:self]; //set delegate! 
[UIView setAnimationDidStopSelector: 
    @selector(secondAnim:finished:context:)]; 


-(void)secondAnim:(NSString *)animationID 
     finished:(NSNumber *)finished 
      context:(void *)context { 

    //animation #2 
} 
관련 문제