美文网首页
关于懒加载子控制器的view

关于懒加载子控制器的view

作者: 要加油啊小和尚 | 来源:发表于2018-04-29 17:16 被阅读0次

    这里的懒加载是指点击按钮的时候,才从子控制器中取出对应的view,然后addSubview,而不是自定义的控件的get懒加载创建,是为了解决用for循环一下都取出来的细节问题,属于细节优化

    总结为:懒加载子控制器的view就是在点击对应按钮的时候才取出来,加进去

    点击按钮,开始联动,设置偏移量,滚动完毕,用到谁再加谁

    滚动完毕在哪个方法中体现?

    在UIView 调用animation方法后,设置完偏移量让其滚动,再加上completion,表示滚动完毕

    如何保证添加上去后是对应的位置呢?添加到哪里?

    设置frame,若不设置frame,默认起点都是(0,0)都堆到了一起

    -(void)addChildVcViewIntoScrollview:(NSUInteger)index

    {

        UIView *childVcView = self.childViewControllers[index].view;

        if(childVcView.window)return;

        childVcView.frame = CGRectMake(index * self.scrollview.ts_width, 0, self.scrollview.ts_width, self.scrollview.ts_height);

        [self.scrollviewaddSubview:childVcView];

    }

    一定要考虑默认情况下,添加第一个子控制器的view

    这个时候往往会产生这样的疑问:不断的取出来,不断的加进去,会不会重复添加?

    答案是不会的,因为同一个内存中的对象,最后只会是一份

    frame不必每次都算一遍

    为了排除每次都要执行的情况,可以加个判断

    if(view.superview) return 或者if(view.window)

    还有一种写法,先取出对应的控制器,判断是否调用过viewDidLoad

    if(childVc.isViewDidLoader) return;

    superview有值,说明已经加到上面了

    应用场景:

    1.点击按钮,子控制器的view加到了scrollview上进行切换

    2.点击按钮,子控制器的view直接加到了父控制器的view上

    相关文章

      网友评论

          本文标题:关于懒加载子控制器的view

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