1.介绍
AsyncDisplayKit 是facebook出的iOS框架,主要用来加强复杂的用户交互界面顺畅度和减少响应时间。
这个东西的效果要去旧一些的设备上才看得出来,多用在比较复杂的UITableview上, 只是普通的需求文字图片排版其实没必要。
它设计出来的初衷是为了开发facebook 的 Paper(链接需科学上网)。
2.集成:
pod 'AsyncDisplayKit'
如果你使用swift那么要在你的 Objective-C bridging header中加入
#import <AsyncDisplayKit/AsyncDisplayKit.h>
AsyncDisplayKit(ASDK)的基本单元是node,ASDisplayNode是UIView之上的抽象层,同时也是CALayer的抽象层。和只能被用在主线程的视图不同,nodes是线程安全的:你能并行的实例化并设置整个node层级,并且在后台线程里运行。
3.使用:
objc:
1 | dispatch_async(_backgroundQueue, ^{ |
swift:
1 | dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) { |
4.去构建一个自己的ASCellNode
首先你要继承 ASCellNode
然后添加自己的node或者官方的组件1
2
3
4
5
6
7
8@interface PXStatusCellNode : ASCellNode
{
@protected
ASDisplayNode *_contentBackgroudNode;
ASTextNode *_messageNode;
ASTextNode *_avatarNode;
ASImageNode *_photosNode;
}
1 | 计算高度 |
1 | 布局 |
然后就可以在 ASTableView 中使用这个自定义的 ASCellNode了 , 薄荷的朋友圈timeline用的就是这个。
5.AsyncDisplayKit包括的组件:
· ASDisplayNode. UIView的副本, 一个子类,用来自定义node。
· ASControlNode. 类似于UIControl, 用来制作按钮的子类。
· ASImageNode. 类似于UIImageView, 异步的解码图像资源。
· ASTextNode. 类似于UITextView, 基于TextKit构建,支持富文本的全部特性。
· ASTableView. UITableView子类,用于支持node。
· ASVideoNode. 刚出的播放视频组件,包装了 AVPlayer, 只有播放和暂停功能,性能还未优化
6.官方文档:
· Read the Getting Started guide
例子项目每个都可以单独打开 需要运行下 pod install
· Get the sample projects
7.除了官方文档以外值得一看的教程:
英文:
asyncdisplaykit-tutorial-achieving-60-fps-scrolling
中文:
AsyncDisplayKit 教程:达到 60 FPS 的滚动帧率