在做项目时,一个tableview push跳转卡壳了,每次push的时候都会变缓慢、卡顿,看起来极为难受!
究其原因,必然是UI渲染的性能问题,因为每个cell都需要加阴影,切圆角,性能消耗巨大。
后来找到了一个属性
view.layer.shouldRasterize = YES;//缓存
当 shouldRasterize 设成 true 时,layer 被渲染成一个 bitmap,并缓存起来,等下次使用时不会再重新去渲染了。实现圆角本身就是在做颜色混合(blending),如果每次页面出来时都blending,消耗太大,这时shouldRasterize = yes,下次就只是简单的从渲染引擎的 cache 里读取那张 bitmap,节约系统资源。
tableview滚动时,重用cell,每次都要去切圆角,加阴影,的确消耗巨大,会阻塞UI的线程。
但是要注意的一点:该属性会造成该视图的图像模糊,以至于影响到子视图。
使用时应 避免在该view上添加子视图。不然你会发现你的控件全都模糊不清😆