什么是转场
- 转场的本质是下一场景(子 VC)的视图替换当前的场景视图(子 VC)以及相应的控制器的切换,表现为当前视图消失和下一视图出现这一过程。
常用的转场
在 UINavigationController 中 push 和 pop
在 UITabBarController 中切换 Tab
Modal 转场:presentation 和 dismissal,俗称视图控制器的模态显示和消失,仅限于modalPresentationStyle属性为 UIModalPresentationFullScreen 或 UIModalPresentationCustom 这两种模式
UICollectionViewController 的布局转场:UICollectionViewController 与 UINavigationController 结合的转场方式,实现很简单。
转场代理
[UINavigationControllerDelegate] //UINavigationController 的 delegate 属性遵守该协议(因识别问题,这里用方括号替换尖括号)
[UITabBarControllerDelegate] //UITabBarController 的 delegate 属性该协议
[UIViewControllerTransitioningDelegate] //UIViewController 的 transitioningDelegate 属性遵守该协议
转场发生时,UIKit 将要求转场代理将提供转场动画的核心构件:动画控制(遵守<UIViewControllerAnimatedTransitioning>协议)。提供也就是返回给代理对象。
什么是转场动画(动画控制)
- 基于上诉转场过程实现的的动画。
转场动画主要实现思路
设置转场代理,
实现代理方法,代理方法返回转场动画
。转场动画对象遵循转场动画协议,转场动画对象实现代理方法两个,一个是 (NSTimeInterval)transitionDuration:(nullable id <UIViewControllerContextTransitioning>)transitionContext;
另外一个是- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext;