ios – CALayer优化?

前端之家收集整理的这篇文章主要介绍了ios – CALayer优化?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在添加几个CALayers作为UIView层的子层.每层的内容是从服务器下载的不同图像.每个图层从屏幕外动画到随机生成的位置.图像数据是异步下载的.每幅图像约为300×300或更小.

作为随机放置的结果,层重叠,一些层被它们上面的层遮挡.这一切都很好.

我正在使用the answer to this question中的建议删除图层,因为它们变得完全被遮挡.确定覆盖率的计算发生在单独的线程上.

我有一个UIPanGestureRecognizer,允许用户在屏幕上拖动图层.

添加的层数接近25-30并且逐渐变差时,我遇到了性能问题.动画变得不稳定并且通常完全不存在(新添加的层只是出现在它们的最终位置).并且平移手势被忽略或导致所选层的不稳定重新定位.

我假设我正在杀死GPU,所有的层重叠,另一层动画在上面?

有关如何提高性能的任何建议?

处理大量图层的最佳做法?

让图层在单独的view.layer中开始动画比以前添加的图层更好吗?

谢谢!

解决方法

几行快速检查.

运行Core Animation Instrument并查找不透明度.仅将图层的不透明标志设置为YES是不够的,如果底层图像具有alpha组件,则图层将考虑该值.

如果您从服务器获取的数据具有alpha,那么您应该使用Quartz重绘并以不包含alpha的新格式在本地保存文件.

确保您没有将100万像素图像放入100×100磁贴中.同样是Core Animation Instrument,打开’Color Misaligned Images’并寻找黄色.

30到50层应该没问题.

猜你在找的iOS相关文章