Pro*_*ber 14 iphone core-animation calayer ipad ios
如果我在CALayer上设置了shouldRasterize = YES,我是否还必须在每个子图层上设置它,如果我想整个层次结构被展平以获得更好的动画效果?
我问,因为当我在根层设置shouldRasterize = YES并在Instruments中启用"Color Blended Layers"时,所有子层仍然存在并标记为混合.它并没有让任何事情变得扁平化.
gda*_*vis 10
设置shouldRasterize并不像你想的那样完成.为了合成父视图(无论是否栅格化)的外观,它必须检查子视图以查看它们是否opaque透明.当子对象是opaque,它们不需要混合.当它们是透明的时,视图需要与它们后面的任何东西混合(或者在层次结构中更高).
因此,shouldRasterize不会影响您使用仪器看到的绿色/红色.为了让一切都变绿,你需要不使用透明度并拥有所有的子对象opaque.有时根据您的设计,它仍然不可避免地有红色区域.该仪器是只是为了帮助您优化那些可能会opaque减少混合GPU具有做的量.
编辑:为了进一步解释,假设你有一个UILabel坐在照片上面.您只想查看文本而不是其背景颜色,因此将其设置backgroundColor为clear,并将opaque属性设置为NO.在乐器中,现在显示为红色.GPU必须将此透明度混合在其后面的图像上,执行两次绘制操作而不是一次.
如果我们设置opaque到YES,给它一个坚实的背景颜色,视图现在会显示绿色的仪器,因为它没有融入与其他任何观点,看法.
因此,无论图层是否光栅化,它仍然必须合成其子视图,因此shouldRasterize对您在Instruments中看到的内容无论如何都没有任何影响.
| 归档时间: |
|
| 查看次数: |
3272 次 |
| 最近记录: |