您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>源码下载>通讯/手机编程>

特斯拉组件 ios高性能开发应用

大小:1.4 MB 人气: 2017-09-27 需要积分:2

  简要说明下各个协议的作用:

  FMPageDataSource, 提供子页面,子页面的个数,子页面展示的frame给PageController。

  FMPageDelegate, 提供页面交互切换和非交互切换的回调给上层以及页面的纵向滑动和横向滑动的contentoffset给上层。

  FMTabDataSource, 提供TabView的具体展示效果。

  FMTabDelegate, 提供TabView的点击响应给上层。

  FMCoverController, 提供CoverView给CoverController.

  其中,FMTabController默认遵循FMTabDataSource,FMTabDelegateSource,FMPageDataSource,FMPageDelegate协议。FMCoverController遵循FMCoverDatasource协议。

  2.2 接口设计

  接口遵循高内聚和低耦合的特性,只把Delegate和DataSource开放给上层,同时做接口分离,把Page,Tab,Cover特性的分离。 代码如下:

  @interfaceFMTabController : FMBusinessViewController 《FMPageControllerDataSource, FMPageControllerDelegate, FMTabDataSource, FMTabDelegate》@interfaceFMCoverController : FMTabController 《FMCoverDataSource》2.3 Child页面的生命周期管理和切换。

  1.UIScrollView支持分页效果,手势处理及交互操作多个回调方法可以实现页面的切换效果。

  2.生命周期管理有两种方式 a.频繁地add/remove ChildController b.使用下面的代码实现生命周期的管理:

  1)shouldAutomaticallyForwardAppearanceMethods 2)beginAppearanceTransition: animated: 3)endAppearanceTransition

  a.会产生一个重大缺陷,就是频繁切换的卡顿问题。

  b.不需要频繁地去调用add/remove,1)方法避免了 add/remove产生的生命周期,2)和3)保证了开发者可以自己控制ChildController的生命周期。

  Page的生命周期图如下:

  特斯拉组件 ios高性能开发应用

  初次或者reloadPage

  特斯拉组件 ios高性能开发应用

  交互切换和非交互切换 2.4 性能问题扩展

  以下通过Iphone5 模拟器 10.3系统,与UIPageViewController做了性能上的对比。

  UIPageViewController 快速切换内存占用情况

  特斯拉组件 ios高性能开发应用

  UIPageViewController 快速切换GPU占用情况

  特斯拉组件 ios高性能开发应用

  Page组件快速切换内存占用情况

  特斯拉组件 ios高性能开发应用

  Page组件快速切换GPU占用情况

  特斯拉组件 ios高性能开发应用

  从上图中内存占用图标的波动情况可以看出UIPageViewController在快速切换的时,会尽可能快地释放掉不用的controller及其view(主要是view)以保证内存占用较小,所以图标指标先才会频繁的波动,与UIPageViewController作对比,Page组件用空间换时间的策略避免页面卡顿。

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!