iOS 自定义翻转动画 (Custom Transitioning)

demo 链接

自定义翻转动画包括两部分:
1.UIViewControllerAnimatedTransitioning,动画协议
2.UIViewControllerInteractiveTransitioning,交互协议
动画协议,实现controller 之间 跳转的呈现形式,一般跳转和返回回是两个不同的动画,所以一般两个动画会同时存在。

- (NSTimeInterval)transitionDuration:(nullable id <UIViewControllerContextTransitioning>)transitionContext; // 动画需要执行的时间
- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext; // 自定义的动画需要写在这里,使用completeTransition来结束跳转

交互协议,controller之间翻转动画的整个过程可以通过这个协议来自定义。

// 这三个函数决定了执行过程状态,
- (void)updateInteractiveTransition:(CGFloat)percentComplete; // 开始翻转
- (void)cancelInteractiveTransition; // 取消翻转
- (void)finishInteractiveTransition; // 翻转成功
通过UIViewControllerContextTransitioning上下文协议,使用viewControllerForKey来获取FormVC,ToVC,FromView,ToView。来对这些内容进行操作。
可以使用snapshotViewAfterScreenUpdates,来获取一个需要改变的view。


使用:
1.模态跳转,
vc.modalPresentationStyle = UIModalPresentationCustom; // 设置成自定义
vc.transitioningDelegate = self; //签代理
然后实现对应的代理方法既可以,包括跳转,返回,跳转的交互,返回的交互。

2.push
原理和模态是一样的,只不过跳转在当前controller里面实现,
返回在目标controller里面实现。

具体代码可以看:

demo链接
push并没有实现,push首先签UINavigationControllerDelegate,然后在对应页面实现对应的代理方法即可,翻转动画和翻转过程可以和模态跳转是相同的。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yan_1564335/article/details/53997020
个人分类: iOS
上一篇iOS 给类别(Category)添加weak (property)属性,关联(Associated)
下一篇Sqlite 数据库更新 iOS
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭