2012-04-11 5 views
3

flip 또는 curl과 같은 기본 애니메이션 외에도 다른 애니메이션을 사용하여 푸시/팝하는 방법을 묻는 사람들이 많이 있습니다.UINavigationController 전환 효과를 변경하는 적절한 방법은 무엇입니까

문제는 질문/대답이 상대적으로 오래된 것입니다. 즉, [UIView beginAnimations:] (예 : here)과 같은 것이 있거나 매우 다른 두 가지 접근 방식을 사용한다는 것입니다.

첫번째처럼 (NO 설정된 애니메이션 플래그) 제어기를 추진 전에있는 UIView의 transitionFromView:toView:duration:options:completion: 선택기를 사용하는 다음 :

UIViewController *ctrl = [[UIViewController alloc] init]; 
[UIView transitionFromView:self.view 
       toView:ctrl.view 
       duration:1 
       options:UIViewAnimationOptionTransitionFlipFromTop 
       completion:nil]; 

[self.navigationController pushViewController:ctrl animated:NO]; 
다른 하나는

명시 적으로 다음과 같은 CATransaction으로 CoreAnimation를 사용하는 :

// remember you will have to have the QuartzCore framework added to your project for this approach and also add <QuartzCore/QuartzCore.h> to the class this code is used 
CATransition* transition = [CATransition animation]; 
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 
transition.duration = 1.0f; 
transition.type = @"flip"; 
transition.subtype = @"fromTop"; 
[self.navigationController.view.layer removeAllAnimations]; 
[self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; 

UIViewController *ctrl = [[UIViewController alloc] init]; 
[self.navigationController pushViewController:ctrl animated:NO]; 

두 접근법에 대한 장단점이 있습니다.

첫 번째 방법은 훨씬 깨끗한 코드를 제공하지만 "suckEffect", "cube"및 과 같은 애니메이션을 사용하지 못하도록 제한합니다.

두 번째 방법은이를보고 잘못 생각합니다. 앱 스토어에서 앱을 거부 할 수있는 문서화되지 않은 전환 유형 (Common transition types documentation ~ CATransition Class Reference에는 존재하지 않음)을 사용하여 시작합니다.이 트랜잭션을 사용했기 때문에 거부 된 앱에 대한 참조를 찾을 수 없었습니다. 이 문제에 대한 명확한 설명도 감사 하겠지만) "cameraIris", "rippleEffect"등과 같은 다른 애니메이션 유형을 사용할 수 있으므로 애니메이션에 훨씬 더 많은 유연성을 제공합니다.

이와 관련하여 내가 전환 UINavigationController 전환이 필요할 때마다 QuartzCoreCoreAnimation에 대해 진정으로 항소해야합니까? UIKit 만 사용하여 동일한 효과를 얻을 수있는 다른 방법이 있습니까?

그렇지 않은 경우 미리 정의 된 상수 (kCATransitionFade, kCATransitionMoveIn 등) 대신 "flip"및 "cube"와 같은 문자열 값을 사용하면 앱 스토어에서 내 앱 승인과 관련하여 문제가됩니까?

또한 각각의 방법 중 하나를 선택할지 결정하는 데 도움이 될 수있는 두 가지 방법에 대한 다른 장단점이 있습니까?

답변

1

AppStore의 승인과 관련하여 나는 어떤 애니메이션 라이브러리를 사용하는지에 따라 거래 차단기를 생각하지 않습니다. 당신은 이제까지 당신을 위해 편리한 느낌을 사용하고, 함께 사용할 수 있습니다. 개인적인 관점에서 볼 때 CoreAnimation & QuartzCore은 특정 이벤트에 애니메이션을 추가하려고 할 때 매우 멋지다고 말합니다. 개별 구성 요소에 추가 할 수있는 세부 수준으로 인해 좋습니다.

그러나 이러한 옵션 만 사용할 수있는 것은 아닙니다. 애니메이션 용 라이브러리는 COCOS2D입니다. 그것들은 사용하기에 정말로 멋지고 매우 간단합니다. 예를 들어 CoreAnimation을 사용하는 경우 30 줄의 코드를 사용하는 경우 COCOS2D을 사용하고 3-5 줄의 코드로 설정할 수 있습니다. 또한 COCOS2D 프레임 워크 (chipmunk)를 사용할 때 Physics를 각 구성 요소와 통합 할 수 있습니다.

+1

나는 전에 cocos2d를 사용해 보았습니다. 1 전에 waaay.0 릴리스 및 UIKit 함께 그들의 애니메이션을 사용할 수 없다는 것을 기억하는 한, CCFSrites 또는 이와 비슷한 CCxxx 클래스를 사용해야했다 ... 그래서 애니메이션 프레임 워크를 사용하면서 ' UIViewControllerler' 내 'UINavigationController'에? 그것은 굉장 할 것이다! 그렇다면이를 달성하는 방법에 대한 몇 가지 코드를 제공 할 수 있습니까? –

+1

이것이 가능하지 않다고 생각합니다. Cocos2D는 OpenGL을 사용하고 자체 뷰를 관리합니다. –

관련 문제