首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CALayer优化?

CALayer优化?
EN

Stack Overflow用户
提问于 2011-01-31 12:36:56
回答 2查看 3.7K关注 0票数 7

我添加了几个CALayers作为UIView层的子层。每一层的内容都是从服务器下载的不同图像。每一层都是从屏幕外到随机生成的位置的动画。图像数据是异步下载的。每张图像的大小约为300x300或更小。

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

我正在删除图层,因为它们从视图中完全模糊,使用the answer to this question中的建议确定覆盖率的计算发生在单独的线程上。

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

当添加的层数接近25-30并变得越来越糟糕时,我遇到了一个性能问题。动画会变得断断续续,并且通常完全不存在(新添加的层只是出现在它们的最终位置)。并且平移手势或者被忽略或者导致所选层的断断续续的重新定位。

我假设我杀死了GPU,所有的层都重叠在一起,另一个层在上面做动画?

对如何提高性能有什么建议吗?

处理大量层的最佳实践?

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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-01 22:10:30

有几件事需要快速检查。

运行核心动画工具并查找不透明度。仅仅将图层的不透明标志设置为YES是不够的,如果底层图像有alpha分量,图层将会考虑到这一点。

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

请加倍确保您没有将一百万像素的图像放入100x100平铺中。也核心动画仪器,打开‘颜色错位图像’,并寻找黄色。

30到50层应该没有问题。

票数 4
EN

Stack Overflow用户

发布于 2011-02-01 09:45:50

如果所有的层都放不下GPU的内存或内存的一部分,事情就会慢很多。据报道,与在GPU内存中合成层相比,加载和卸载GPU内存相当慢。您必须尝试这个内存限制,因为较旧设备的可用GPU内存比较新的设备要少。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4847671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档