UINavigationController があります。VC1 を rootViewController にし、プログラムで VC1 から VC2 をロードしてから、カスタム アニメーションを VC1 から VC2 に移動します。標準。すべてがうまくて良いです。
さて、次のように 2 つの間にカスタム アニメーションを作成したいと思います。
つまり、VC1 はスライドして見えなくなり、VC2 はその下にあります。最初のシート (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 などは使っていないので、フェードがどこから来ているのかわかりません。
期待した結果が得られない理由を教えていただければ幸いです。これが明らかな場合は申し訳ありませんが、私はこれを何時間も試していて、本当にイライラしました.