iOS迅速实现转场动画的方法示例

  

  

转场动画在我们日常开发中是经常遇到的,所谓转场动画,就是一个控制器的视图切到另一个控制器的视图上过程中过的动画效果。本例子是实现了在导航控制器的titleView边上慢慢弹出一个控制器。下面话不多说,来一起看看详细的介绍:

  

  

 iOS迅速实现转场动画的方法示例“> <br/>
  专场前</p>
  <p> <img src=//需要设置转场动画的控制器titleViewVc。transitioningDelegate=aniamator//这里的动画是动画师的实例      

下面是动画类中的代码

        类animatorTool: NSObject {   懒惰的var isPresent=false   回调:var (ispresent: Bool)→()) & # 63;//向外界传递动画是否正在显示      init(回调:((ispresent: Bool)→())) {   自我。回调=回调   }//自定义构造方法,便于给闭包赋值   }   扩展animatorTool: UIViewControllerTransitioningDelegate {   func presentationControllerForPresentedViewController(提出:ui, presentingViewController呈现:ui, sourceViewController来源:ui)→UIPresentationController& # 63;{   返回AWYPresentationController (presentedViewController:, presentingViewController:展示)//AWYPresentationController是自定义继承自UIPresentationController的类,是为了设置模态出来的vc的视图的大小   }   func animationControllerForPresentedController(提出:ui, presentingController呈现:ui, sourceController来源:ui)→UIViewControllerAnimatedTransitioning& # 63;{   isPresent=true   self.callBack !(isPresent: isPresent)   回归自我   }      func animationControllerForDismissedController(驳回:ui)→UIViewControllerAnimatedTransitioning& # 63;{   isPresent=false   self.callBack !(isPresent: isPresent)   回归自我   }   }      扩展animatorTool: UIViewControllerAnimatedTransitioning {   func transitionDuration (transitionContext: UIViewControllerContextTransitioning& # 63;)→NSTimeInterval {   返回0.5//动画时长   }   func animateTransition (transitionContext: UIViewControllerContextTransitioning) {   isPresent & # 63; animatetransitionForPresented (transitionContext): animatetransitionForDismissed (transitionContext)   }      func animatetransitionForPresented (transitonContext: UIViewControllerContextTransitioning) {   让aimView=transitonContext.viewForKey (UITransitionContextToViewKey) !   transitonContext.containerView () & # 63; .addSubview (aimView)      aimView。变换=CGAffineTransformMakeScale (1.0, 0.0)   UIView.animateWithDuration (transitionDuration (transitonContext),动画:{   aimView.layer。anchorPoint=CGPointMake (0.5, 0.0)   aimView。变换=CGAffineTransformIdentity   }){(_)   transitonContext.completeTransition(真正的)   }   }      func animatetransitionForDismissed (transitonContext: UIViewControllerContextTransitioning) {   让aimView=transitonContext.viewForKey (UITransitionContextFromViewKey) !   transitonContext.containerView () & # 63; .addSubview (aimView)         UIView.animateWithDuration (transitionDuration (transitonContext),动画:{   aimView.layer。anchorPoint=CGPointMake (0.5, 0.0)   aimView。变换=CGAffineTransformMakeScale(1.0, 0.001)//留一点值,这样会有动画效果   }){(_)   transitonContext.completeTransition(真正的)   }      }         }      

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
  

iOS迅速实现转场动画的方法示例