如何自定义Modal View Controller呈现动画?

lea*_*vez 24 core-animation modalviewcontroller ios

modalTransitionStyle我想添加一个CAAnimation(或其他东西),而不是设置uiviewcontroller .此代码可以在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];
Run Code Online (Sandbox Code Playgroud)

如何将其实现到模态视图控制器?

rde*_*mar 56

您只需要将过渡添加到窗口的图层,并显示您的控制器而不是推送它:

     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];
Run Code Online (Sandbox Code Playgroud)


Umi*_*aya 6

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)
Run Code Online (Sandbox Code Playgroud)


lia*_*ang 5

从苹果开发指南:

使用自定义动画呈现视图控制器

要使用自定义动画显示视图控制器,请在现有视图控制器的操作方法中执行以下操作:

  • 创建要呈现的视图控制器。

  • 创建您的自定义过渡委托对象,并将其分配给视图控制器的transitioningDelegate属性。要求时,过渡委托的方法应创建并返回自定义动画对象。

  • 调用presentViewController:animated:completion:方法来呈现视图控制器。

...