场景
项目中遇见一个场景,VC
没有UINavigationController
,但是需要Push
和Pop
的动画效果。
一开始使用了MZFormSheetPresentationViewController
来实现Push
效果,但是却没有Pop
的边缘返回手势。本着求Github
不如求己的原则,手撸了一个库出来,WHPopAnimation
。
Push/Pop转场效果及实现
-
Push
转场效果-
view.frame
从右屏外平移到屏幕正中 - 父
VC
透明度从1.0
变成0.5
- 父
VC
向左平移110 - 时长
0.3s
-
-
Pop
转场效果-
view.frame
从屏幕正中平移到右屏外 - 父
VC
透明度从0.5
变成1.0
- 父
VC
向右平移110 - 时长
0.4s
- 子
VC
的self.view
需要添加UIScreenEdgePanGestureRecognizer
边缘手势,平移超过屏幕中线则dismiss(Pop)
,反之回弹回去。
-
实现:
<UIViewControllerAnimatedTransitioning>协议
和UIPercentDrivenInteractiveTransition
手势过渡管理对象
WHPopAnimation 接入说明
无需管理<UIViewControllerAnimatedTransitioning>协议
和UIPercentDrivenInteractiveTransition
手势过渡管理对象。
AVc
把BVc
弹出来(Present
出来),只需要AVc
继承WHPopViewController
,Present
调用代码也和之前一样(WHPopViewController
中重写该方法)。
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated:(BOOL)flag completion:(void (^)(void))completion
Ps.
假如你同一个VC
既需要Push
的转场效果,也需要Present
的转场效果,你可以修改上面的方法,增加一个BOOL isPushAnimation
的参数。
Github链接:
https://github.com/Balzac646729740/WHPopAnimation