When should I set layer.shouldRasterize to YES

Avner Barr picture Avner Barr · Oct 16, 2013 · Viewed 16.3k times · Source

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!

Answer

Rob picture Rob · Oct 16, 2013

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.