2012년 8월 7일 화요일

iOS 프로그래밍 팁 - 8 카드 뒤집기 효과

닥치고 기억 앱에서 사용된 카드를 선택하면 앞 그림이 보였다가 다시 원래 뒷 그림으로
일반적인 같은 짝 찾기 게임에서 사용하는 방법이다.

[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:btn cache:YES];
는 사실 뷰콘트롤러 전환시에 유틸리티의 경우 정보 버튼을 누르면 일반적으로 이효과 로
뷰 콘트롤러가 넘어가게 많이 만든다.
이를 버튼에 이미지에 적용해서 카드 게임에서 카드 뒤집기 효과를 내는 것이다.



btnClick 메서드에서

toFrontBtnImage 메서드를 호출하고

toFrontBtnImage 메서드는 앞면으로 바뀌는 에니메이션을

만일 정답이라면 그대로
틀린 경우
toBackBtnImage 메서드르 호출 해서 뒷면으로 바뀌느 에니메이션을
하면 된다.

toFrontBtnImage의 구현

img = [UIImage imageNamed:fileName];         //<--- 앞면 이미지 얻기
    flagSide[btn.tag] = FRONT;
   
    CGPoint startpoint = CGPointMake(0, 0);
    [img drawAtPoint:startpoint];

    [UIView beginAnimations:@"toFrontBtnImage" context:nil];
    [UIView setAnimationDuration:ANIMATION_DURATION];
   
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:btn cache:YES]; <-- 뒤집기 효과
   
    [btn setImage:img forState:UIControlStateNormal];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    [UIView commitAnimations];

toBackBtnImage의 구현
같은 방법으로 이미 정의된 뒷면 그림 파일을 이용


 UIImage * img;
    img = [UIImage imageNamed:@"back.png"];
    flagSide[btn.tag] = BACK;
   
    CGPoint startpoint = CGPointMake(0, 0);
    [img drawAtPoint:startpoint];
   
    [UIView beginAnimations:@"toBackBtnImage" context:nil];
    [UIView setAnimationDuration:ANIMATION_DURATION];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; // 빠져나갈때 가속
   
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:btn cache:YES];
   
    [btn setImage:img forState:UIControlStateNormal];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    [UIView commitAnimations];

animationDidStop 메서드에서는 정답일때 오답일때를 검출해서 toBackBtnImage를 다시 호출 하거나
정답일때 처리를 구현 해주면 된다.



댓글 없음: