所查到的标签控制器的实现方案大多是 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,而且还有优化空间。
网友评论