动画与值类型:iOS开发的深入探索
1. 实现自定义UINavigationController过渡
实现自定义过渡并非易事,涉及众多移动部件,委托数量和使用的协议数量可能令人望而生畏。当创建自定义模态展示时,之前探索的视图控制器过渡技术效果很好。但如果要在UINavigationController或UITabBarController中自定义贯穿整个应用的过渡,则需要以不同方式实现。
以下是UINavigationController的推送动画设置与之前设置的不同之处:
- 交互式过渡流程与视图控制器过渡类似,但这次由UINavigationControllerDelegate提供用于执行视图间过渡的UIViewControllerAnimatedTransitioning和UIViewControllerInteractiveTransitioning对象。
- 由于负责过渡的委托设置在导航控制器上,而不是显示的视图控制器上,因此具有自定义委托的导航控制器执行的每次推送和弹出操作都将使用相同的自定义过渡,这有助于在整个应用中实现一致的行为。
为实现自定义过渡,我们将使用三个类:
1. NavigationDelegate类 :实现UINavigationController委托,并使用UIPercentDrivenInteractiveTransition对象管理交互式返回过渡。
2. ContactDetailShowAnimator类 :负责显示过渡。
3. ContactDetailHideAnimator类