UIPageViewController 与 UIScrollV

2018-03-01  本文已影响0人  yue_kyy

所查到的标签控制器的实现方案大多是 UIPageViewController 实现的,所以将 UIPageViewController 应用到项目中查看效果,我们目前的实现方案是使用 UIScrollView 模拟UIPageViewController 的效果,两者的对比数据如下:

一、运行内存

经过多次操作,可以看出 UIPageViewController 的内存占用略大于 UIScrollView 的实现方案

二、CPU 占用率对比

1)UIPageViewController 在切换时最高达到98%

UIPageViewController CPU 占用波动图

2)UIScrollView 在切换时最高达到78%

UIScrollView CPU占用波动图

三、总结

(1)UIPageViewController  存在的缺陷

          1、缓存页面导航设置不正确,会导航到错误的页面

          2、快速滑动情况下会出现空白页,已复现

          3、切换 childController 时候的 CPU 占用极高、切换时内存频繁波动

(2)我们目前的方案:使用 UIScrollView 模拟 UIPageViewController

          1、由上图可知,在切换时,内存和占用 CPU 的情况较优于 UIPageViewController

          2、模拟了平缓切换的效果、动画效果符合业务需求

          3、解决 UIPageViewController 连续快速切换的页面闪白问题(页面在使用时未及时添加或提前移除)

TODO:

           1、在点击顶部 header 切换时,内存波动较大。

           2、当用户极快速的滑动切换页面时,在动作结束前未执行添加或移除 VC 操作,所以在滑动过程中会出现空白展示页面直至动作结束,目前优化了顶部导航的动画效果,随着用户滑动而更新位置和颜色。

所以经过对比,认为目前的实现方案优于替换成 UIPageViewController,而且还有优化空间。

demo:https://github.com/yuetianlu/YTLPageController.git

上一篇下一篇

猜你喜欢

热点阅读