更快的UICollectionView单元格

时间:2014-03-29 01:06:36

标签: ios uitableview asynchronous uicollectionview uicollectionviewcell

有很多答案可以将图像加载到UITableViews或UICollectionViews中。但是,如果我的UICollectionView正在显示来自其他视图控制器的视图呢?

在我的UICollectionViewCell子类中说我有这个:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        self.catViewController = [[CatViewController alloc] initWithNibName:nil bundle:nil];
        self.catViewController.view.frame = self.bounds;
        [self addSubview:self.catViewController.view];
    }
    return self;
}

在我的馆藏视图中,数据源:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    MyCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:kSomeId forIndexPath:indexPath];

    cell.catViewController.data = self.data[indexPath.row]; //see below

    return cell;
}

catViewController有一个data属性的setter。设置此属性后,cat会加载它的图像,以及该视图的其他一些相关图像。那么如何正确地重用MyCell单元格,以便集合视图在每次创建(或重用)单元格时都不会断断续续?每个MyCell占据集合视图的整个宽度,该视图水平滚动,因此每当新单元格滚动到视图中时,集合视图会停顿片刻。

1 个答案:

答案 0 :(得分:0)

对于高性能CollectionView单元格,请使用 iOS10 中的以下新内容使用xcode8

在ViewController中实现协议" UICollectionViewDataSourcePrefetching"

类ViewController:UIViewController,UICollectionViewDataSourcePrefetching {

将以下代理设置为storyboard中的集合视图(请参阅附图) 或以编程方式

ViewController viewDidLoad 方法

collectionView.delegate = self

collectionView.dataSource = self

collectionView.prefetchDataSource = self enter image description here