上一篇我们讲了iOS自定义转场-无交互.
这一篇我们来讲讲iOS自定义转场动画-带交互的情况.
0. 交互情况下VC、Nav、Tab都需要遵循的代理
需要遵循UIViewControllerInteractiveTransitioning
代理.并且实现- (void)startInteractiveTransition:(id <UIViewControllerContextTransitioning>)transitionContext;
方法.
UIViewController情况下
最重要的是需要实现UIViewController的
UIViewControllerTransitioningDelegate
的两个代理方法来指定谁来控制交互.
- (id<UIViewControllerInteractiveTransitioning>)interactionControllerForPresentation:(id<UIViewControllerAnimatedTransitioning>)animator {
return nil;
}
- (id<UIViewControllerInteractiveTransitioning>)interactionControllerForDismissal:(id<UIViewControllerAnimatedTransitioning>)animator {
return nil;
}
UINavigationController情况下
- (nullable id <UIViewControllerInteractiveTransitioning>)navigationController:(UINavigationController *)navigationController
interactionControllerForAnimationController:(id <UIViewControllerAnimatedTransitioning>) animationController NS_AVAILABLE_IOS(7_0);
UITabbarController情况下
- (nullable id <UIViewControllerInteractiveTransitioning>)tabBarController:(UITabBarController *)tabBarController
interactionControllerForAnimationController: (id <UIViewControllerAnimatedTransitioning>)animationController NS_AVAILABLE_IOS(7_0);
我们可以选择使用当前类来管理然后在- (void)startInteractiveTransition:(id <UIViewControllerContextTransitioning>)transitionContext
方法写动画方法.也可以使用UIPercentDrivenInteractiveTransition
对象去管理动画.
资源.如果以后封装得更加易用一些我会考虑放到GitHub开源