2

モーダル ビュー コントローラーを表示するためのトランジションを変更するにはどうすればよいですか。表示遷移がデフォルトの UIModalTransitionStyle を使用している可能性はありますか....

UIModalTransitionStyleCoverVertical = 0,
UIModalTransitionStyleFlipHorizontal,
UIModalTransitionStyleCrossDissolve,
UIModalTransitionStylePartialCurl, 

しかし、閉じるトランジションは UIViewAnimationTransitionCurlUp トランジションを使用しています。重要なのは、UIModalTransitionStylePartialCurl を使用したくないということです。これは CurlUp にする必要があります。

残念ながら、次のコードは機能しません。

[UIView transitionFromView:self.view toView:self.parentViewController.parentViewController.parentViewController.view duration:1.0 options:UIViewAnimationTransitionCurlUp completion:^(BOOL finished) {....}];

View Controllerがモーダルモードで表示されるのは何か関係があるのか​​もしれません。

誰かが助けてくれるといいですね。

4

1 に答える 1

1

ぎこちなく感じますが、目的のView Controllerのビューを追加する遷移をアニメーション化することでこれを行うことができますpresentViewController.効果は既にレンダリングされています)。

私はサブクラス化されたカスタムでこれを行いますUIStoryboardSegue(NIB やストーリーボードとは言いませんでしたが、概念は同じです):

- (void)perform
{
    UIViewController *src = self.sourceViewController;
    UIViewController *dst = self.destinationViewController;

    [UIView transitionWithView:src.navigationController.view
                      duration:0.75
                       options:UIViewAnimationOptionTransitionCurlUp | UIViewAnimationOptionCurveEaseInOut
                    animations:^{
                        [src.navigationController.view addSubview:dst.view];
                    }
                    completion:^(BOOL finished){
                        [dst.view removeFromSuperview];
                        [src presentViewController:dst animated:NO completion:nil];
                    }];
}

明らかに、ソース ビュー コントローラーにナビゲーション コントローラーがない場合は、それらの " src.navigationController.view" を単に " " に置き換えますsrc.view。しかし、うまくいけば、これでアイデアが得られます。

そして、論理的なフォローアップの質問を予想して、View Controllerを閉じるときに、ボタンを次のように接続していますIBAction

- (IBAction)doneButton:(id)sender 
{
    [UIView transitionWithView:self.view.superview
                      duration:0.75
                       options:UIViewAnimationOptionTransitionCurlDown
                    animations:^{
                        [self dismissViewControllerAnimated:NO completion:nil];
                    }
                    completion:nil];
}
于 2012-10-04T15:01:49.350 に答える