【问题标题】:How to custom Modal View Controller presenting animation?如何自定义模态视图控制器呈现动画?
【发布时间】:2013-11-12 14:22:48
【问题描述】:

我不想设置 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];

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

【问题讨论】:

    标签: ios core-animation modalviewcontroller


    【解决方案1】:

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

         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];
    

    【讨论】:

    • 这样做而不是设置一个实现 UIViewControllerAnimatedTransitioning 的委托有什么优点/缺点?
    • 以上代码从iOS2开始工作,UIViewControllerAnimatedTransitioning从iOS 7.0开始出现
    【解决方案2】:

    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)
    

    【讨论】:

      【解决方案3】:

      来自苹果开发指南:

      Presenting a View Controller Using Custom Animations

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

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

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

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

      ...

      【讨论】:

      • 您还需要将视图控制器的modalPresentationStyle 设置为.custom。此方法比在 iOS 7 (2013) 后使用CATransition 更正确
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      • 2012-12-12
      相关资源
      最近更新 更多