美文网首页
ASDK(texture)

ASDK(texture)

作者: 陈_振 | 来源:发表于2018-06-08 13:47 被阅读0次

    图片来源:
    raywenderlich

    IMG_0964.jpg

    主线程中一些比较耗时的操作:

    • 尺寸计算和约束:heightForRowAtIndexPath或者是sizeThatFits
    • 图片解码
    • 绘制
    • 对象生命周期的管理

    介绍ASDisplayNode

    ASDisplayNode是对UIView的封装,类似于UIView和CALayer的关系。和UIView不同的是,Node默认在后台队列并发进行渲染。

    Node容器类

    Node真正发挥功效是和以下四个容器类结合的时候:

    • ASViewController :继承自UIViewController,你可以为该控制器提供被管理的Node。
    • ASCollectionNode and ASTableNode :类似于UICollectionView和UITableView
    • ASPagerNode :相比于UIPageViewController,提供更强大的滑动性能。

    总结方法-tableNode:nodeBlockForRowAtIndexPath:

    1. ASCellNode类似于UITableViewCell,有一点需要去注意,类似于-tableView:cellForRowAtIndexPath:的方法-tableNode:nodeBlockForRowAtIndexPath:返回值是一个block-ASCellNodeBlock。这是因为ASTableNode内容维护所有的cell,并且为indexPath返回一个block,当它准备好的时候,它能并发初始化所有的Cell。
    2. block中的返回值必须是ASCellNode

    总结方法-tableView:

    1. 这个方法取代tableView:heightForRowAtIndexPath
    2. 在ASDK中,所有的ASCellNode负责定义他们自己的size。在该方法中你可以可选的定义一个最小和最大的size为你的cell。

    ASRangeController

    每一个被这个容器包含的node会有以下三种状态:

    • Preload Range :处于这个状态的node要用来获取model。
    • Display Range :处于这个状态的node要用来绘制文本,图片解码。
    • Visible Range : 处于这个状态的node要用来显示在屏幕上。

    Node接口状态(interfaceState)回调

    这些node的状态是如何正确的协调工作的?

    每个node都有一个interfaceState的属性,所有的node被ASRangeController统一协调更新。

    幸运的是我们不需要直接操作node的interfaceState属性,我们只需在 interface state 回调中做出响应即可。

    给Node命名

    为了在滚动过程中观察每个node的状态,我们可以通过如下方法给node命名:

    -tableNode:nodeBlockForRowAtIndexPath:中添加如下方法d

    node.debugName = [NSString stringWithFormat:@"cell %zd", indexPath.row];
    

    AsyncDisplayKit 2.0教程:入门

    AsyncDisplayKit 2.0教程:自动布局

    texture官网
    texture翻译
    预加载与智能预加载(iOS)

    iOS 开发一定要尝试的 Texture(ASDK)

    使用 ASDK 性能调优 – 提升 iOS 界面的渲染性能

    ASDK源码剖析

    相关文章

      网友评论

          本文标题:ASDK(texture)

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