我正在尝试创建类似于500px app的CollectionView。
应用程序逻辑:启动应用程序后,CollectionView会加载空单元格(大约100个),然后当用户向下滚动时,单元格将填充图像。在视图结束时,将创建新批次的空单元格(Load More)。图片来自Instagram,每次通话20次。
问题:当拉出新图像(异步)时,单元格渲染会继续,并且通常会在下一批图像可用之前创建3-5个空单元格。
问题:这个问题有什么解决方法吗?也许有更好的方法来实现这个目标?
代码:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
ALPhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"photo" forIndexPath:indexPath];
cell.backgroundColor = [UIColor grayColor];
if (indexPath.row < [self.photos count]) {
cell.photo = self.photos[indexPath.row];
}
if (indexPath.row == [self.photos count]-6) {
[ALLoadMore loadMore:self.nextPage input:self.photos completionHandler:^(NSArray *newLoad, NSString *next) {
self.photos = newLoad;
self.nextPage = next;
NSLog(@"%@", self.nextPage);
dispatch_async(dispatch_get_main_queue(), ^{
//[self.collectionView reloadData];
if ([self.photos count] > indexPath.row) {
cell.photo = self.photos[indexPath.row];
NSLog(@"call");
}
NSLog(@"%lu", (unsigned long)[self.photos count]);
});
}];
}
return cell;}
现在,细胞计数是一个静态数字:120