Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When should I set layer.shouldRasterize to YES

I've seen fixes for some lagyness issues by setting the layer property of the view

view.layer.shouldRasterize = YES;

I saw a great difference in performance when using a UICollectionView and preparing the cells and setting the propery.

Not sure what the implications are.

Would be great to get an explanation. Thanks!

like image 970
Avner Barr Avatar asked Oct 16 '13 14:10

Avner Barr


1 Answers

In WWDC 2012 Polishing Your Interface Rotations video (sadly, no longer available online) they talked about the advantages and implications of rasterizing layers.

Bottom line if you have a complex view (i.e. relatively expensive to re-render) that you are animating, but for which the animated view is not itself changing, rasterizing the layer can improve the performance by not re-rendering the layer all the time. But it does this at the cost of memory (saving a rasterized image in memory).

But, if you animate a change within the layer, the shouldRasterize can adversely affect performance (because it's going to re-rasterize the layer for each frame of the animation).

Generally, if animating a complex set of layers that, themselves, are not changing, then you can set shouldRasterize to YES, do the animation, and then turn off shouldRasterize.

like image 79
Rob Avatar answered Nov 14 '22 20:11

Rob