collectionNode 가 모든 Cell 을 동시에 준비하고 보여줄 수 있도록, nodeBlockForItemAt 을 사용하는 것이 좋습니다.
NOTE :
ASCollectionNode 는 Cell 을 reuse 하지 않는다.
nodeBlock 방식을 선호한다.
nodeBlock 은 thread-safe 해야 한다.
ASCellNode는 ASTableNode, ASCollectionNode, ASPagerNode에서 사용할 수 있다.
Node Block Thread Safety Warning
Node Block 이 thread-safe 해야 하는건 중요합니다.
그 중 하나는 데이터 모델이 Node Block 외부에서 접근하도록 하는 것입니다.
그러므로, 블록 내부에서 인덱스를 사용해야 할 일은 거의 없습니다.
아래의 nodeBlockForItemAt 를 확인해보세요.
funccollectionNode(_collectionNode: ASCollectionNode, nodeBlockForItemAtindexPath: IndexPath)-> ASCellNodeBlock {guard photoFeed.count > indexPath.row else{return{ASCellNode()}}let photoModel = photoFeed[indexPath.row] // this may be executed on a background thread - it is important to make sure it is thread safelet cellNodeBlock ={()-> ASCellNode inlet cellNode =PhotoCellNode(photo: photoModel) cellNode.delegate =selfreturn cellNode}return cellNodeBlock}
위의 코드에서 Node Block 을 생성하기 전에 외부에서 인덱스로 사진 모델에 접근하는 것을 확인할 수 있습니다.
UICollectionViewController 를 ASDKViewController 로 대체하기
Texture 는 UICollectionViewController 와 동일하지는 않습니다.
대신 ASDKViewController 의 유연성을 이용해 모든 유형의 UI...ViewController 를 재생성할 수 있습니다.
ASCollectionNode 를 ASDKViewController 의 -init(node:) 을 사용하여 생성합니다.
생성자에ASTableNode, ASPagerNode 등 모든 노드를 사용할 수 있습니다.
ASCollectionView 에 접근하기
ASCollectionView 는 ASCollectionNode 를 위해 제거되었습니다.
하지만 UICollectionView(ASCollectionView) 의 속성을 변경해야하는 경우에는 접근할 수 있어야 합니다.
UICollectionView 서브 클래스인 ASCollectionView 는 여전히 내부에서 사용되고 있습니다. 직접 만들어서는 안 되지만 ASCollectionNode의 .view 속성에 접속해 직접 사용할 수 있습니다. 노드의 뷰 또는 레이어 프로퍼티 각각 -viewDidLoad 또는 -didLoad가 호출된 후에만 접근해야 한다는 점을 잊지 마세요.
아래의 LocationCollectionNodeController 는 viewDidLoad(:) 에서 직접 ASCollectionView 에 접근합니다.
Cell Sizing and Layout
ASCollectionNode 와 ASTableNode 를 사용하 ASCellNode 의 높이를 관리할 필요가 없습니다.
Cell 은 constrained size 에 맞게 커질 것이고, 제공된 UICollectionViewLayout에 의해 배치됩니다.
또한 ASCollectionNode의 contrentedSizeForItemAt(:) 를 사용하여 CollectionNode 에서 사용되는 셀의 사이즈를 제한할 수 있습니다.
Examples
ASCollectionNode Cell Layout 의 가장 자세한 예는 CustomCollectionView 앱 입니다. 이 앱은 ASCollectionNode를 사용하는 Pinterest 스타일의 셀 레이아웃과 사용자 정의 UICollectionViewLayout 을 포함합니다.