美文网首页
WMMenuView(WMPageController)

WMMenuView(WMPageController)

作者: 一代骄马 | 来源:发表于2018-08-13 12:16 被阅读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)

    相关文章

      网友评论

          本文标题:WMMenuView(WMPageController)

          本文链接:https://www.haomeiwen.com/subject/koghjftx.html