WMMenuView(WMPageController)

2018-08-13  本文已影响929人  一代骄马


1.WMPageController 

继承自UIViewController

通过代理WMPageControllerDataSource设置数据源

WMPageControllerCachePolicy的缓存策略 对加载的页面进行缓存处理

NSCache用于缓存加载过的VC

WMPageControllerPreloadPolicy可以对ViewController进行预加载

//过程为

1.init方法初始化  设置参数

init

initWithNibName:bundle:

loadView

viewDidLoad

详见iOS中的各种加载方法(initWithNibName,loadNibNamed,initWi... - 简书

2.//计算vc和和控件的frame

    [self wm_calculateSize];

3.//在view上添加ScrollView contensize 为vc的总宽 

    [self wm_addScrollView];

4.//添加vc道baseVC上 

    [self wm_addViewControllerAtIndex:self.selectIndex];

 //核心代码   

//添加VC到BaseVC上

[self addChildViewController:viewController];  

 CGRect frame = self.childViewFrames.count ? [self.childViewFrames[index] CGRectValue] : self.view.frame;   

//设置这个显示的子VC的frame

viewController.view.frame= frame;  

[viewControlle rdidMoveToParentViewController:self];   

//把这个子VC的view加到scrollview上

[self.scrollView addSubview:viewController.view];

5.记录当前的VC

    self.currentViewController = self.displayVC[@(self.selectIndex)];

6.添加MenuView 到view上 

    [self wm_addMenuView];

    [self didEnterController:self.currentViewController atIndex:self.selectIndex];

二 WMStickyPageViewController

WMStickyPageViewController继承自WMPageController 

相比较wmpagecontroller sticky多了header部分,由于wmpage的scrollview是menu下面部分 所以为了让headerview和整个页面一起滚动,所以sticky的页面 (整个显示的view)替换成了scrollview,这又涉及到 这个view中的scrollview和展示vc的实现代理的scrollview(tableview)的偏移量的处理(此处不涉及前面的WMScrollview)

上一篇下一篇

猜你喜欢

热点阅读