AsyncDisplayKit初体验
AsyncDisplayKit不仅仅是一个工具,它更像一个系统UI框架,改变整个编码体验。主要是因为AsyncDisplayKit只是对UIKit的再一次封装,基本沿用了UIKit的API设计,大部分情况下,只是将view改成node,UI前缀改为AS
1.基本单元是node。ASDisplayNode是uiview的抽象,也是CALayer的抽象。node不像view只能用在主线程,node是线程安全的。你可以在后台线程同时初始化和配置他们的整个继承链。
2.为了保持界面平滑和可相应,app应该保持每秒60帧的渲染,意味着主线程只有1/60秒来推每一帧。就是用16毫秒来执行所有布局和绘制代码。由于一些系统负载,你的代码经常只有10毫秒来运行,超过10毫秒就会掉帧。
- AsyncDisplayKit让你把图片解码,文字缩放和渲染等昂贵的ui操作从主线程中去除。
Nodes节点
AsyncDisplayKit的核心组件包括:
· ASDisplayNode 与UIView对应 —一个子类,用来自定义node。
· ASControlNode. 类似于UIControl —用来扩展生成buttons。
· ASImageNode. 类似于UIImageView —异步的图像解码.
· ASTextNode. 类似于UITextView —基于TextKit构建,支持富文本的全部特性。
· ASTableView. UITableView子类,用于支持node。
在容器中使用Nodes
AsyncDisplayKit有以下几种 Container
ASDK Node Container | UIKit Equivalent |
---|---|
ASCollectionNode | 代替UIKit的 UICollectionView |
ASPagerNode | 代替UIKit的 UIPageViewController |
ASTableNode | 代替UIKit的 UITableView |
ASViewController | 代替UIKit的 UIViewController |
ASNavigationControllerv | 代替UIKit的 UINavigationController,遵循ASVisibility协议 |
ASTabBarController | 代替UIKit的 UITabBarController,遵循ASVisibility协议 |
Node的子类
AsyncDisplayKit提供了以下几种node。
相对UIKit的组件来说 node 最大的改进就是将所有布局和显示都放在子线程,因此主线程就能够即时地响应各种事件。
ASDK Node | UIKit Equivalent |
---|---|
ASDisplayNode | 代替UIKit的 UIView ,其他的node都继承于它 |
ASCellNode | 代替UIKit的 UITableViewCell 和 UICollectionViewCell,用在 ASTableNode , ASCollectionNode 和 ASPagerNode中 |
ASScrollNode | 代替UIKit的 UIScrollView,这个 node 用在自定义滚动区域上非常有用 |
ASEditableTextNode | 代替UIKit的 UITextView |
ASTextNode | 代替UIKit的 UILabel |
ASImageNode | 代替UIKit的 UIImage |
ASNetworkImageNode | |
ASMultiplexImageNode | 代替UIKit的 AVPlayerLayer |
ASVideoNode | |
ASVideoPlayerNode | 代替UIKit的 UIMoviePlayer |
SControlNode | 代替UIKit的 UIControl |
ASButtonNode | 代替UIKit的 UIButton |
ASMapNode | 代替UIKit的 MKMapView |