竖屏
界面:全屏 栈模式:新界面push时,覆盖旧界面。
横屏时左右分屏,栈模式:左边永远是次最新,右边永远是最新界面
push逻辑动画
pop逻辑
需求
1. 支持左右分屏
2. 保留基于栈(UINavigationController)的展示逻辑
3. 业务改造成本越小越好
闲鱼内部核心业务都使用flutter进行搭建,涉及由集团中台提供基础业务均是原生ViewController,再有部分业务使用H5进行搭建。这三大部分的业务都需要进行兼容改造
1. UINavigationController改造
基于UINavigationController
的ContainerViewController永远都把新的ViewController覆盖老的ViewController。无法做到上述说的左右分屏。我的做法是基于UINavigationController
创建子类,重写push/pop的ViewCotroller整个排版逻辑。这样让整个应用原来的push/pop逻辑不用修改。只需要在iPad使用不一样的新类NavigationControllerForiPad
就能完美的迁移。
自定义ContainerViewCotroller
iOS中专门用于控制ViewController的控制类都统称为ContainerViewCotroller。如 UINavigationController, UITabBarController, and UIPageViewController