iOS中高效的视图控制器管理



在Snapchat等无缝滑动导航风格应用程序的时代,视图控制器管理似乎很重要。有些视图可能很胖,有些视图可能填充了大量数据。当构建一个在二维表面上有5-10个视图的iOS应用程序时(向左滑动视图X,向下滑动视图Y,再次向下滑动视图Z,依此类推),处理这些视图控制器的最佳实践是什么?我假设人们希望能够对这些视图中的UI元素进行某种关键帧动画。

我能看到的合理的解决方案是:

  1. 将所有视图控制器添加到2d滚动视图中,并选择性地锁定滚动方向

    • 优点:易于设置,易于为子视图设置动画关键帧(例如,使用Jazzhands)
    • 缺点:需要保持许多视图控制器的活力,可能会带来沉重的负担资源和启动时间长
  2. 将视图控制器添加到2d滚动视图并选择性地锁定滚动方向,但仅在需要时填充它们

    • 优点:可以缩短启动时间,也易于设置动画关键帧
    • 缺点:我们仍然需要保持所有视图控制器的活力
  3. 使用手势驱动的视图控制器演示动画

    • 优点:我们只需要保持当前视图控制器及其根视图控制器的活动状态
    • 缺点:设置起来更麻烦。更难执行基于滚动的关键帧动画。在呈现大视图控制器时可能会增加延迟

正确的方法是使用UINavigationController,并根据需要从导航堆栈中推送和弹出视图控制器。

通过实现UIViewControllerAnimatedTransitioning协议,可以控制视图控制器之间的动画。通过这种方式,您可以使用任何类型的动画进行过渡。

最新更新