码迷,mamicode.com
首页 > 移动开发 > 详细

iOS开发——自定义转场动画

时间:2015-06-30 14:31:36      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

首先是UIPresentationController,这个控制器给modal新的viewController提供了下一步的view和转场的管理,从一个viewController被modal出来到被dismiss,都是用UIPresentationController来管理视图被展现的过程的各个方面。可以添加自定义动画,对大小改变做出响应,并且可以管理其他viewController是如何显示在屏幕的。
在初始化时,重写
这个只读属性是被呈现的视图所在的view,我们可以在这个view上添加其他视图,通过
insertSubview(dummyView, atIndex: 0)这个方法。
接下来就用到两个代理 UIViewControllerTransitioningDelegate和 UIViewControllerAnimatedTransitioning
实现代理方法,isPresented是一个是否被呈现的标记
// 返回负责转场的控制器对象
    func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController, sourceViewController source: UIViewController) -> UIPresentationController? {
        return PopoverPresentationController(presentedViewController: presented, presentingViewController: presenting)
    }
    
// 返回提供modal动画的对象
    func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        isPresented = true
        return self
    }
    
// 返回提供dismiss动画的对象
    func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        isPresented = false
        return self
    }
    
// 动画时长
    func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
        return 1.2
    }
    
// 转场动画实现函数
    func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
       
     
    }

 

在最后一个方法中实现转场动画的过程。
此外,还要设置
// 设置转场动画代理
vc.transitioningDelegate = self
// 将转场动画设置为自定义
vc.modalPresentationStyle = UIModalPresentationStyle.Custom

 

否则,转场动画是无法自定义的。

iOS开发——自定义转场动画

标签:

原文地址:http://www.cnblogs.com/FrankieZ/p/4610153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!