0

有很多答案将图像加载到UITableViews或UICollectionViews中。但是如果我的UICollectionView显示来自其他视图控制器的视图呢?更快的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有数据属性的设置。当这个属性被设置时,猫会加载它的图像,以及该视图的一些其他相关图像。那么,如何正确地重用MyCell单元,以便集合视图在每次创建(或重新使用)单元时不会出现断断续续的情况?每个MyCell都占用水平滚动的集合视图的全部宽度,因此每当新的单元格滚动到视图中时,集合视图暂时停顿。

+0

如果设置该单元需要太多的时间通常,您可能希望同时填充虚拟单元格,并将图像加载到数据设置器的完成块中。通过这种方式,您会看到单元格在占位符加载后会淡入,但滚动可以保持平滑。 –

+0

我想你需要发布在单元格的'catViewController'上设置'data'时实际发生的事情。如何进行优化高度依赖于您在该方法中所做的工作。 –

+0

也许你需要的是一个PageViewController。 –

回答

0

对于高性能的CollectionView细胞,使用下列新的东西在iOS10与xcode8

在你的ViewController实施协议“UICollectionViewDataSourcePrefetching”作为

类的ViewController:UIViewController中,UICollectionViewDataSourcePrefetching {

将以下代表设置为故事板中的收藏视图(请参阅参赞d图像) 或以编程

的ViewController的viewDidLoad中方法

collectionView.delegate =自

collectionView.dataSource =自

collectionView.prefetchDataSource =自 enter image description here

相关问题