ASDK,即AsyncDisplayKit的简称。
如上图所示 ASDK 把正在滚动的 ASTableView/ASCollectionView 划分为三种状态:
-
Fetch Data
-
Display
-
Visible
上面的这三种状态都是由 ASDK 来管理的,而每一个 ASCellNode 的状态都是由 ASRangeController 控制,所有的状态都对应一个 ASInterfaceState:
-
ASInterfaceStatePreload 当前元素貌似要显示到屏幕上,需要从磁盘或者网络请求数据;
-
ASInterfaceStateDisplay 当前元素非常可能要变成可见的,需要进行异步绘制;
-
ASInterfaceStateVisible 当前元素最少在屏幕上显示了 1px。
当用户滚动当前视图时,ASRangeController 就会修改不同区域内元素的状态:
上图是用户在向下滑动时,ASCellNode 是如何被标记的,假设当前视图可见的范围高度为 1,那么在默认情况下,五个区域会按照上图的形式进行划分:
BUFFER | SIZE |
---|---|
Fetch Data Leading Buffer | 2 |
Display Leading Buffer | 1 |
Visible | 1 |
Display Trailing Buffer | 1 |
Fetch Data Trailing Buffer | 1 |