我想实现自定义ViewController转换。
那里有很多解决方案。其中大多数都基于UIViewControllerContextTransitioning
或UIViewControllerTransitioningDelegate
。
因为他们主要做同样的事, 这些方法之间有什么区别? (为什么Apple为了同一目的而为我们提供了两个API?)
谢谢!
答案 0 :(得分:1)
你怎么能说他们也一样,你真的读过这份文件吗?显然,他们不...... 它们在某种程度上与转换相关,对于这一点来说还可以,但是出于不同的原因你需要两者!
基本上,UIViewControllerTransitioningDelegate
允许您指定哪些对象负责哪些转换 - 例如,您可以使用transitionDelegate
的{{1}}来说明“是否有推送转换,然后UIViewController
(或任何其他对象,它可能是你的ViewController)负责过渡“
完成此操作后,MyPushTransitioner
- 顾名思义 - 只是一个Context对象。它在转换期间由您的动画对象(实现UIViewControllerContextTransitioning
或UIViewControllerAnimatorTransitioning
)使用。
此上下文对象使您可以访问viewControllers的视图,您可以操作,动画,...并使用它来报告转换进度(例如:您执行帧和不透明度的动画,然后告诉转换上下文完成...)
修改强>
这是另一个SO帖子,我提供了一些关于这些API如何工作的提示 - > IOS 7 Weather APP Like Transition/Animations
答案 1 :(得分:0)
实现UIViewControllerTransitioningDelegate的对象 协议出售用于管理固定长度或 视图控制器之间的交互过渡什么时候想 使用自定义模式表示类型set来呈现视图控制器 它的modalTransitionStyle属性为UIModalPresentationCustom和 将符合此协议的对象分配给它 transitioningDelegate属性。当您呈现该视图控制器时, UIKit会在您的转换委托中查询要使用的对象 将视图控制器设置为动画。
UIViewControllerContextTransitioning协议的方法提供 视图之间的过渡动画的上下文信息 控制器。不要在自己的课程中采用这个协议,也不要 你应该直接创建采用这个协议的对象吗?期间 过渡,参与过渡的动画师对象接收到 来自UIKit的完全配置的上下文对象。自定义动画师 对象 - 采用UIViewControllerAnimatorTransitioning的对象 或UIViewControllerInteractiveTransitioning协议 - 应该简单 从提供的对象中检索所需的信息。