iOS 转场动画练习(OC版)

最近几天一直在整转场动画,以前觉得很难,在实际操作之后,发现开发过程中,我们所需要做的,也就是两个View(fromview 和 toview)在ContainView上的动画而已,控制动画过程这些操作,我们只需要实现代理,苹果已经帮我们写好,直接调用就行!

过程中遇到以下几个点,Mark下:

 iOS13后present转场有了很大的变化,图层改变了。iOS13之前,presentedView即为presentedController的view,iOS13之后改成了新View,将presentedController的view作为新View的子视图,并且在新View上,添加了一个Pan手势。

push: ApushB,使用转场动画,会使B的系统侧滑手势失效,我的理解是这样,不对求指出:系统侧滑手势是自带了delegate的,是私有类_UINavigationInteractiveTransition的一个实例,而这个实例,正是NavigationController的私有属性_cachedInteractionController,而我们做转场动画,有实现

- (nullable id <UIViewControllerInteractiveTransitioning>)navigationController:(UINavigationController *)navigationController  interactionControllerForAnimationController:(id) animationController  这个方法,替换了delegate的实例,所以导致侧滑手势失效。

佐证:当ApushB使用转场动画,上面方法返回nil,B的系统侧滑手势还是OK的!

注意:ApushB自定义转场后,B返回A,A的侧滑会失效!!!所以我在A didShow 之后,还原了NavigationController的代理。

Demo: https://github.com/shr191116/TransitionDemo.git

动画是电商App常用的列表跳详情动画,网上动画一大堆,我就不抄了....

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容