3

UINavigationControllerデフォルトのアニメーション以外に、flipやなどの他のアニメーションを使用してsをプッシュ/ポップする方法を尋ねる人がたくさんいますcurl

問題は、質問/回答が比較的古いことです。つまり、[UIView beginAnimations:]ここの例)のようなものがあるか、2つの非常に異なるアプローチを使用しています。

transitionFromView:toView:duration:options:completion:1つ目は、次のように、コントローラーをプッシュする前に(アニメーションフラグをに設定してNO)UIViewのセレクターを使用することです。

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

[self.navigationController pushViewController:ctrl animated:NO];

もう1つは、次CoreAnimationのように明示的に使用することです。CATransaction

// 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」などのアニメーションの使用が制限されます

2番目のアプローチは、それを見ただけでは間違っていると感じます。それは、ドキュメント化されていないトランジションタイプ(つまり、CATransitionクラスリファレンスの一般的なトランジションタイプのドキュメントには存在しない)を使用することから始まります。これにより、App Storeからアプリが拒否される可能性があります(つまり、使用していたために拒否されたアプリの参照が見つからなかった可能性があります)このトランザクションは、この問題についても説明していただければ幸いです)が、「cameraIris」、「rippleEffect」などの他のアニメーションタイプを使用できるため、アニメーションの柔軟性が大幅に向上します。

それに関して、私は本当に魅力的な移行が必要なときはいつでもアピールする必要がQuartzCoreありますか?のみを使用して同じ効果を達成する他の方法はありますか?CoreAnimationUINavigationControllerUIKit

kCATransitionFadeそうでない場合、事前定義された定数( 、、など)の代わりに「flip」や「cube」などの文字列値を使用することはkCATransitionMoveIn、App Storeでのアプリの承認に関する問題になりますか?

また、両方のアプローチに関して、それぞれを選択するかどうかを決定するのに役立つ他の長所と短所はありますか?

4

1 に答える 1

1

AppStore の承認に関しては、使用するアニメーション ライブラリに基づいて契約を破るものではないと思います。使いやすい方を使い分けて、組み合わせて使うこともできます。個人的な観点から言えば、特定のイベントにアニメーションを追加しようとしている場合、CoreAnimation&QuartzCoreは非常に優れていると言えます。個々のコンポーネントに詳細なレベルを追加できるため、優れています。

しかし、それらが唯一の選択肢ではありません。COCOS2Dアニメーション用のライブラリを確認する必要があります。それらは本当に素晴らしく、使い方は非常に簡単です。たとえば、使用CoreAnimationに 30 行のコードが必要な場合COCOS2D、3 ~ 5 行のコードで使用および設定できます。また、COCOS2Dフレームワークを使用すると、各コンポーネントに Physics を統合できます ( chipmunk)。

于 2012-04-11T20:18:37.073 に答える