美文网首页
VirtualView 原理

VirtualView 原理

作者: 我是小胡胡分胡 | 来源:发表于2019-06-25 21:31 被阅读0次

    总结: VirtualView就是一个view,通过模版创建,可以绑定数据

    流程:xml-编译xml-动态下发组件-组件加载-保留创建组建树能力-创建组建树-vvcontainerview-绑定数据-计算尺寸-重新设置尺寸size

    组件:uiview、calayer、图、文
    计算元素layout布局、addsubview、addsublayer,共享唯一跟视图、唯一根calyer、扁平化结构绘制

    组件三大件:显示内容、子组件布局排版组装、事件交互

    virtualview,基于uiview、calyer、hittest、gesture重新定义uiview
    VVTemplateManager 模版管理器 ( 一堆模版加载器, 对应模版版本 )
    VVTemplateBinaryLoader 模版加载器 ( 具有还原成node的能力, 对应为一个xml out 描述模版)

    VVBaseNode 模版node树, 何为node,他不是UIView,他是NSObject,但是实现了类似UIView的树形套装方法,通过addSubview,addSubLayer给其容器view增加子视图, 在容器视图中使用其持有的的UIVIew/CALayer显示界面

    1、就是实现了cocoaview, 视图, 无非就是 线条(UIView)、文本(UILabel)、图片(UIImageView) 所组成
    2、VVLayer(CALayer) VVLineLayer (CALayer) 可以局部刷新 kvo
    3、VVLayout 其实就是node的集合.....
    4、所有子节点都是CALayer or UIView,都被添加到根视图cocoaView上

    VVLineLayer
       CALayer
    VVLayer
       CALayer
    VVLabel
       UILabel
    VVLoopingScrollView
       UIScrollView
    
    
    VVBaseNode
        NVImageView---无layoutSubNodes UIView+UIImageView
        NVLineView----UIView+VVLineLayer(CALayer)
        NVTextView---VVLable(CALayer)
        VVLayout---无layoutSubNodes
            VVGridLayout
                VVGridView
            VVFrameLayout
                VVPageView
                NVFrameLayout
            VVRatioLayout
                NVRatioLayout
            VVVHLayout
                NVVHLayout
            VVVH2Layout
                NVVH2Layout
    
    

    VVViewContainer容器, 所有node在此集合------
    (_rootNode.rootCanvasLayer = self.layer;
    _rootNode.rootCocoaView = self;)
    1、使用UIView、CALayer、hitTest+Gesture重新定义了全新的VIEW结构
    2、相比UIView作用是: 使用node一键生成
    3、使用kvc对node节点进行数据更新:updateData
    4、计算尺寸:estimatedSize

    相关文章

      网友评论

          本文标题:VirtualView 原理

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