本文是自己学习texture过程中进行总结的相关知识,方便后期浏览查阅。如有遗漏、不足、错误之处欢迎大家批评指出。
节点 note
If you’re used to working with views, you already know how to use、 nodes. Most methods have a node equivalent and most UIView and CALayer properties are available as well. In any case where there is a naming discrepancy (such as .clipsToBounds vs .masksToBounds), nodes will default to the UIView name. The only exception is that nodes use position instead of center.
这是官方文档关于节点的原文。大体意思是:如果我们能够熟练的使用视图的话呢么也同样的能够熟练的使用note。但又有些许不同,如UIView和CALayer在存在命名差异的时候默认的使用UIView的属性名称,例如:.clipsToBounds vs .masksToBounds;其次是节点使用的是位置而不是中心。
节点容器node Containers
说白了就像是杯子装水一样。杯子就是个node Containers(节点容器),而水对应的就是note(节点)。node Containers中的所有note的布局、数据获取、解码、渲染都将异步完成。这也是为什么推荐使用node Containers装在note的原因,此处需要注意一下note虽然可以直接添加在视图层级结构中(如添加在UIView上而不是添加在node Containers),但当页面刷新频繁时几乎可以保证note会出现渲染时闪烁的效果,类似我们刷新tableView会出现的效果。下面是常用的节点容器。
| texture节点容器 | UIKit等效 |
|---|---|
| ASCollectionNode | 取代UIKit的 UICollectionView |
| ASPagerNode | 取代UIKit的 UIPageViewController |
| ASTableNode | 取代UIKit的 UITableView |
| ASViewController | 取代UIKit的 UIViewController |
| ASNavigationController | 取代UIKit的UINavigationController |
| ASTabBarController | 取代UIKit的UITabBarController |
其中 ASNavigationController、ASTabBarController 使用的是ASVisibility协议。
布局引擎Layout Engine
texture的布局引擎是其最强大的功能之一,也是最独特的功能之一。是基于CSS FlexBox模型建造的。通过ASLayoutSpec对每个节点进行异步测量和布局。
官方文档给出的相关资源:
影片
使用Texture构建流畅且响应灵敏的UI [CocoaHeadsNL 2017]
AsyncDisplayKit 2.0:定义第7个抽象层 [Pinterest HQ 2016]
使用AsyncDisplayKit 2.0进行规模布局 [NSMeetup 2016]
ASCollectionNode [Pinterest HQ 2016]
AsyncDisplayKit代码状态 [WWDC 2016]
AsyncDisplayKit 2.0:智能用户界面 [NSSpain 2015]
使用AsyncDisplayKit轻松响应 [MCE 2015]
异步UI [NSLondon 2014]
教程/文章
使用AsyncDisplayKit在iOS中开发响应式UI [Ziad Tamim,12.29.2016]
AsyncDisplayKit 2.0教程:自动布局 [Luke Parham,12.19.2016]
AsyncDisplayKit 2.0教程:入门 [Luke Parham,12.5.2016]
用于iOS的iOS平滑滚动:我们如何(以及为什么)实施AsyncDisplayKit [Andy Yates,11.4.2016]
布局资源
Texture强大的布局系统基于CSS FlexBox模型。这些站点对于学习该系统的基础知识非常有用。