Texture相关知识一(概念相关知识)

655 阅读2分钟

本文是自己学习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。但又有些许不同,如UIViewCALayer在存在命名差异的时候默认的使用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模型。这些站点对于学习该系统的基础知识非常有用。

ASStackLayout游戏

CSS3 Flexbox的可视指南

FlexBox模式


未完待续

官方文档地址