zoukankan      html  css  js  c++  java
  • iOS开发——自定义转场动画

    首先是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
    否则,转场动画是无法自定义的。
  • 相关阅读:
    Qt项目时隔数月再次打开竟出现bug
    软件测试分类
    为什么要搭建自动化测试框架
    黑盒测试常用方法
    软件测试:闰年判断
    等价类划分的应用
    软件测试学习第二周:等价类划分
    软件测试的目的
    软件测试学期总结
    集成测试深度理解
  • 原文地址:https://www.cnblogs.com/FrankieZ/p/4610153.html
Copyright © 2011-2022 走看看