5

別のViewControllerを押すときの、ナビゲーションViewControllerの「右から左へのスライド」遷移を変更したいと思います。ストーリーボードでオプションを見つけましたが、機能していないようです。トランジションスタイルは同じです。ストーリーボードの宛先ビューコントローラーをクリックすると、これが見つかりましたが、トランジションはモーダルスタイルのセグエ用であるように見えます。

遷移

だから、私の質問は、プッシュスタイルのセグエトランジションを異なって見えるようにすることは可能ですか?もしそうなら、どのように?

4

2 に答える 2

6

カスタムSegue内でCATransitionを使用して、あらゆる種類の遷移を実現できます。これがサンプルコードです。

-(void)perform {

__block UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
__block UIViewController *destinationController = (UIViewController*)[self destinationViewController];                    

CATransition* transition = [CATransition animation];
transition.duration = .25;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade
transition.subtype = kCATransitionFromLeft; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom



[sourceViewController.navigationController.view.layer addAnimation:transition
                                            forKey:kCATransition];

[sourceViewController.navigationController pushViewController:destinationController animated:NO];    


}

詳細については、このリンクにアクセスしてくださいhttp://blog.jambura.com/2012/07/05/custom-segue-animation-left-to-right-using-catransition/

于 2013-06-25T17:27:18.560 に答える
2

プッシュトランジションを使用するには、ビューを接続するUINavigationControllerを使用する必要があります。これらはすべて、1回限りのトランジションのモーダルトランジションオプションです。

同様に、少なくともストーリーボードでは、すでにUINavigationControllerを使用している場合は、プッシュ以外のものを使用することはできません。

この制限を回避するために私が見つけた最も簡単な方法は、コードでそれを行い、UIViewアニメーションまたはCAAnimationでラップされたアニメーションなしでプッシュをラップすることです。

于 2012-12-06T13:39:03.330 に答える