Avner Barr Avner Barr - 16 days ago 5
Objective-C Question

UICollectionview Scrolling choppy when loading cells

I have a gallery in my app utilizing a

UICollectionView
. The cells are approximately 70,70 size. I am using
ALAssets
from the
ALAssetLibrary
in the gallery which I have stored in a list.

I am using the usual pattern for populating the cells:

-(UICollectionViewCell*)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{

mycell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
mycell.imageView.image = [[UIImage imageWithCGImage:[alassetList objectAtIndex:indexpath.row] thumbnail]];
return mycell;
}


My gallery is scrolling choppy. I don't understand why this is. I've tried adding a NSCache to cache the thumbnail images (thinking maybe creating the images was expensive) but this did not help for the performance.

I would expect the UI to be as buttery as the stock app.

I am now suspecting it may be something in the
UICollectionViewCell prepareForReuse
that may be holding up the
dequeueReusableCellWithReuseIdentifier
method but using instruments I was not able to find this.

Any other thing that may be be causing this? Is there a "faster" way to prepare the
UICollectionViewCell
or to
dequeue
them in a faster fashion?

Answer

So anybody having scrolling issues should do this

add these 2 lines after your dequeue

cell.layer.shouldRasterize = YES;
cell.layer.rasterizationScale = [UIScreen mainScreen].scale;
Comments