如何更新交互式转换:实现



我正在学习UIViewController过渡动画。当我阅读UIPercentDrivenInteractiveTransitionupdateInteractiveTransition(_:)方法时,我感到非常困惑。 

苹果文档说:

这是一种方便的方法,可以调用 更新交互式转换:上下文对象的方法。

是的,上下文对象确实有一个updateInteractiveTransition:方法。但是UIPercentDrivenInteractiveTransition没有指向上下文对象的属性。

那么updateInteractiveTransition:如何在UIPercentDrivenInteractiveTransition中实现,UIPercentDrivenInteractiveTransition如何能够调用上下文对象的方法,因为它没有指向UIViewControllerContextTransitioning对象的指针?有人知道吗?

查看其程序集并逐步完成,

-[UIPercentDrivenInteractiveTransition updateInteractiveTransition:]呼叫

+[_UIViewControllerTransitionContext _associatedTransitionContextForObject:self]获取transitionContext对象,其中selfUIPercentDrivenInteractiveTransition的实例。

这在内部调用objc_getAssociatedObject(interactor, _UIAssociatedTransitionContextKey)

现在,至于它何时被存储,当-[_UIViewControllerTransitionContext _setInteractor:]-[UIViewController presentViewController:animated:completion:]调用时被存储,从转换委托接收动画器和交互器。

_setInteractor:做的一件事就是objc_setAssociatedObject(interactor, _UIAssociatedTransitionContextKey, ...) .

最新更新