私はUINavigationControllerを持っています。 VC1をrootViewControllerにして、VC1をVC1からプログラム的にロードした後、VC1からVC2に移動するカスタムアニメーションを作成します。標準。すべてが上品で良い。カスタマイズUINavigationControllerアニメーション:CATransition
さて、私はそうのように両者の間のカスタムアニメーションを持っているしたいと思います:VC2がその下にある間、合計で
、VC1は視野の外にスライドします。最初のシート(VC1)をスライドさせてその下のシート(VC2)を表示するような用紙のように。
私が試みたのは、VC2からVC1に呼び出される次のコードです。
MyVC2 *vctwo = [[[MyVC2 alloc] init] autorelease];
CATransition *transition = [CATransition animation];
transition.duration = 1;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionReveal;
transition.subtype = kCATransitionFromRight;
transition.delegate = self;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[[self navigationController] pushViewController:vctwo animated:YES];
問題は、以下の通りである::
- VC2は、バックグラウンドで固定されていない。しかし、それには問題があります。それは(たとえ私がkCATransitionRevealを指定したとしても)一種のスライドです。私はバックグラウンドで完全に固定されたVC2になりたい。
- VC1がフェードアウトします。私はなぜそれが本当にわからない。私はkCATransitionFadeなどを使用しなかったので、フェードがどこから来るのかわかりません。
私が期待した結果を得られない理由があれば、非常に感謝します。申し訳ありませんが、これは明らかですが、私はこれを数時間試していて、本当に不満を感じました。
ありがとう、私はそれを変更し、VC2はもう動かない。それについて考えるべきだった。フェードについてのどんな考えですか?私はまだフェードアウトアニメーションがどこから来ているのかわかりません。 –
私はフェードが実際にはUINavigationControllerアニメーションの一部でありパーセルであると思います。私はそれを取り除くことはできません。 UINavigationControllerが実装しているカスタムフェードアニメーションを無効にする方法はありますか? –