加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift中基本转场动画.

发布时间:2020-12-14 01:42:16 所属栏目:百科 来源:网络整理
导读://-----------------------------------------------------在一个控制器中实现代码-------------------------------------------------------------------- //默认的Modal,会将上一级的视图移走 let photoBrowserController = PhotoBrowserController(urls:



//-----------------------------------------------------在一个控制器中实现代码--------------------------------------------------------------------

//默认的Modal,会将上一级的视图移走
let photoBrowserController = PhotoBrowserController(urls: urls,indexPaht: indexPath)

//指定动画的提供者,transitioningDelegate 隐式动画。
photoBrowserController.transitioningDelegate = self?.photoBrowserAnimator

//指定Model的样式是自定义的
photoBrowserController.modalPresentationStyle = UIModalPresentationStyle.Custom
self?.presentViewController(photoBrowserController,animated: false,completion: nil)


//-----------------------------------------------------定义转场动画类----------------------------------------------------------------------

import UIKit

/// 专门给控制器提供 ‘转场’ 的动画模型 class PhotoBrowserAnimator: NSObject,UIViewControllerTransitioningDelegate { //是否展示动画 var isPresent = false /// 返回提供展现 Presented 转场动画的对象 func animationControllerForPresentedController(presented: UIViewController,presentingController presenting: UIViewController,sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? { isPresent = true return self } /// 返回消失时 Dismissed 转场动画的对象 func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? { isPresent = false return self } } extension PhotoBrowserAnimator: UIViewControllerAnimatedTransitioning{ /// '转场'时长 /// /// - parameter transitionContext: transition[转场]Context 上下文 /// /// - returns: 时长 func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval { return 0.5 } /// 实现专场动画效果 - 一旦实现这个方法,必须完成动画效果 /// /// - parameter transitionContext: transition[转场]Context 提供一转场动画效果的一切细节 func animateTransition(transitionContext: UIViewControllerContextTransitioning) { isPresent ? presentAnimation(transitionContext) : dismissAnimation(transitionContext) } /// 消失时动画 /// /// - parameter transitionContext: transitionContext private func dismissAnimation(transitionContext: UIViewControllerContextTransitioning){ let fromView = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)?.view UIView.animateWithDuration(transitionDuration(transitionContext),animations: { () -> Void in fromView?.alpha = 0 }) { (_) -> Void in fromView?.removeFromSuperview() transitionContext.completeTransition(true) } } /// 出现时动画 /// /// - parameter transitionContext: transitionContext private func presentAnimation(transitionContext: UIViewControllerContextTransitioning){ //展示动哈 let toView = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!.view toView.alpha = 0 //获取容器视图 let containerView = transitionContext.containerView() //将视图添加到容器视图上才能看到动画效果 containerView?.addSubview(toView) UIView.animateWithDuration(transitionDuration(transitionContext),animations: { () -> Void in toView.alpha = 0 }) { (_ ) -> Void in //动画完成后要声明方式 transitionContext.completeTransition(true) } } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读