做网站设计赚钱吗,制作网页时经常使用什么对网页的布局进行控制,网站有死链怎么处理,学做效果图网站iOS默认的push动画是把即将展示的控制器从右边推过来。有时我们想实现类似PPT中的一些动画#xff0c;这时候就需要自定义转场动画了。如下图我们想实现一个淡出并且放大的过场动画#xff0c;在退出时是一个淡出缩小的动画。 首先需要自定义一个类DiaryAnimator.swift遵守 U… iOS默认的push动画是把即将展示的控制器从右边推过来。有时我们想实现类似PPT中的一些动画这时候就需要自定义转场动画了。如下图我们想实现一个淡出并且放大的过场动画在退出时是一个淡出缩小的动画。 首先需要自定义一个类DiaryAnimator.swift遵守 UIViewControllerAnimatedTransitioning 协议然后实现它代码如下 import UIKitclass DiaryAnimator: NSObject, UIViewControllerAnimatedTransitioning {// 用于接受外界的operationvar operation:UINavigationControllerOperation!// 返回动画时间func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) - TimeInterval {return 0.4}// 要设置的动画//UIKit calls this method when presenting or dismissing a view controller. Use this method to configure the animations associated with your custom transition. You can use view-based animations or Core Animation to configure your animations.func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {let containerview transitionContext.containerViewlet fromVC transitionContext.viewController(forKey: UITransitionContextViewControllerKey.from)let fromView fromVC!.viewlet toVC transitionContext.viewController(forKey: UITransitionContextViewControllerKey.to)let toView toVC?.view// 设置新场景透明度toView?.alpha 0.0// 设置初始值if operation UINavigationControllerOperation.pop {fromView?.transform CGAffineTransform(scaleX: 1.0, y: 1.0)}else{toView?.transform CGAffineTransform(scaleX: 0.3, y: 0.3)}containerview.insertSubview(toView!, aboveSubview: fromView!)UIView.animate(withDuration: transitionDuration(using: transitionContext), delay: 0, options: UIViewAnimationOptions.curveEaseInOut, animations: {if self.operation UINavigationControllerOperation.pop {// 放大要转出的场景fromView?.transform CGAffineTransform(scaleX: 3.3,y: 3.3)} else {// 设置新场景为原始大小toView?.transform CGAffineTransform(scaleX: 1.0,y: 1.0)}toView?.alpha 1.0},completion: { finished intransitionContext.completeTransition(true)})}}自定义好动画后在要使用的控制器中实现 UINavigationControllerDelegate 协议的 optional func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController, to toVC: UIViewController) - UIViewControllerAnimatedTransitioning? 方法返回自定义的动画即可 extension HomeYearController : UINavigationControllerDelegate
{func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController, to toVC: UIViewController) - UIViewControllerAnimatedTransitioning? {let animate DiaryAnimator()animate.operation operationreturn animate}
}转载于:https://www.cnblogs.com/heyode/p/6513581.html