介绍 UIViewControllerTransitionCoordinator(翻译不到之处望多多提)

来源:互联网 发布:淘宝助理怎么导出csv 编辑:程序博客网 时间:2024/06/04 18:38

       一个采用UIViewControllerTransitionCoordinator协议的对象,给视图控制器转场动画提供相关支持。通常来说,你不需要采用这个协议在自己的类中。当你展现或者退出一个视图控制器时,UIKit会自动创建一个转场协调器对象,并且给视图控制器的transitionCoordinator属性赋值。这个转场协调器对象是短暂的,并且延续到转场动画的结束。

      你可以使用一个转场协调器对象执行一个与转场相关的任务,但是它将分离动画控制器正在做的事。在转场期间,动画控制器对象负责把视图控制器的内容呈现在屏幕上,但是可能也有一些其他的可视元素同样需要被展示。比如,一个显示控制器可能想执行显示或者使一些装饰视图消失从视图控制器内容里分离出的动画。这种情况下,可以使用转场协调器来执行这些动画。

     转场协调器和动画控制器对象一块工作,确保任何额外动画被执行在同样的动画组中,就像转场动画一样。在一样的组拥有动画,意味着它们在同样的时间执行,并且可以响应一个动画控制器对象提出的任何时间改变。这些时间调整会自动发生,不需要写额外的代码在你的项目中。

    使用转场协调器处理视图层次动画比在viewWillappear:方法中做出同样的改变,或者相同的方法在你的视图控制器中要好很多。你用这个协议中的方法所注册的block会确保执行一样的转场动画。更重要的是,转场协调器会提供重要的信息关于转场的状态,比如是否它会被取消,对于你的动画block而言,通过UIViewControllerTransitionCoordinatorContext对象。

    除了在转场期间执行注册动画,你可以调用notifyWhenInteractionEndsUsingBlock:方法注册一个block来清理和用户交互的转场动画。清理非常重要,当用户取消转场交互时,当取消的时候,你需要返回一个原始的视图层次状态,就像之前转场存在的一样。

    因为转场协调器仅仅影响在转场期间,UIKit会在转场结束和最终回调被执行的时候释放对象。


0 0
原创粉丝点击