web-dev-qa-db-ja.com

アニメーションを表示するカスタムモーダルビューコントローラーの方法

UiviewcontrollerのmodalTransitionStyleを設定する代わりに、CAAnimation(またはその他の何か)を追加します。このコードは、navigationControllerでカスタムアニメーションを実行できます。

CATransition* transition = [CATransition animation];
          transition.duration = 0.4;
          transition.type = kCATransitionFade;
          transition.subtype = kCATransitionFromBottom;
          [self.navigationController.view.layer addAnimation:transition forKey:kCATransition];
          [self.navigationController pushViewController:adjustViewController animated:NO];

どうすればモーダルビューコントローラーに実装できますか?

24
leavez

トランジションをウィンドウのレイヤーに追加し、コントローラーをプッシュするのではなく表示するだけです。

     CATransition* transition = [CATransition animation];
     transition.duration = 1;
     transition.type = kCATransitionFade;
     transition.subtype = kCATransitionFromBottom;
     [self.view.window.layer addAnimation:transition forKey:kCATransition];
     [self presentViewController:adjustViewController animated:NO completion:nil];
56
rdelmar

Swiftバージョン

let viewController = YourViewController()
let transition = CATransition()
transition.duration = 0.5
transition.type = kCATransitionFade
transition.subtype = kCATransitionFromBottom
view.window!.layer.add(transition, forKey: kCATransition)
present(viewController, animated: false, completion: nil)
6
Umit Kaya

Apple開発ガイドから:

カスタムアニメーションを使用したビューコントローラの提示

カスタムアニメーションを使用してビューコントローラーを表示するには、既存のビューコントローラーのアクションメソッドで以下を実行します。

  • 提示したいView Controllerを作成します。

  • カスタムの遷移デリゲートオブジェクトを作成し、それをビューコントローラーのtransitioningDelegateプロパティに割り当てます。遷移するデリゲートのメソッドは、要求されたときにカスタムアニメーターオブジェクトを作成して返します。

  • PresentViewController:animated:completion:メソッドを呼び出して、ビューコントローラを表示します。

...

5
liaogang