简要说明下各个协议的作用:
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的生命周期图如下:

初次或者reloadPage

交互切换和非交互切换 2.4 性能问题扩展
以下通过Iphone5 模拟器 10.3系统,与UIPageViewController做了性能上的对比。
UIPageViewController 快速切换内存占用情况

UIPageViewController 快速切换GPU占用情况

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

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

从上图中内存占用图标的波动情况可以看出UIPageViewController在快速切换的时,会尽可能快地释放掉不用的controller及其view(主要是view)以保证内存占用较小,所以图标指标先才会频繁的波动,与UIPageViewController作对比,Page组件用空间换时间的策略避免页面卡顿。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !