- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我编写了一个 iOS 应用程序,我在其中非常成功地使用了 CGLayer
。在研究从该应用程序中获得更多性能的方法时,我看到了这篇博文:http://iosptl.com/posts/cglayer-no-longer-recommended/其中作者非常广泛地声明永远不要使用 CGLayer
。单独发布一个帖子并不值得担心,但我也发现有人将此帖子视为需要遵守的内容。
没有提供真正的细节。例如,作者说“有时快,有时慢”。这让我想知道是否担心,一般来说,程序员不会正确使用这个对象。
我想这个问题是针对经验丰富的 Cocoa/Cocoa Touch 开发人员的。这有什么好处吗? CGLayer
确实是需要避免的东西吗?如果是,是否有具体的、可衡量的原因来说明为什么?
最佳答案
从我的回答开始,我想得出结论,您是否会在您的应用中使用 CGLayer
完全是您自己的设计决定。
实际情况是,如果您在屏幕上绘制某些东西,它可能不会在 iOS 平台上给您带来任何好处。在 iOS 上,基本的屏幕组合 block 是 CALayer
。 CALayer
采用 Quartz(CG) 图形上下文将其绘制在屏幕上,这可能是由 CGLayer
本身创建的上下文。现在,CALayer
本身是硬件加速的,会尝试将任何图形内容缓存到显卡并重新使用它们。这就是我们之前使用 CGLayer
的目的。
此外,如果涉及离屏渲染,当 shouldRasterize
设置为 YES
以及在其他一些情况下,CALayer
可以执行此操作。但是,请记住,离屏合成是 CPU 在将渲染内容移交给 GPU 之前执行的另一项任务。因此,同样没有明显的赢家。
CGLayer
在创建不会在屏幕上绘制的 CG 上下文(如 PDF 上下文)时特别方便。
我不确定为什么 Apple 开发团队要求一个人完全避免使用 CGLayer
。可能存在一些潜在的架构缺陷,但迄今为止尚未记录。然而,在我们确定这一点并且我们现有的应用程序是基于 CGLayer
架构设计之前,我找不到任何具体的理由来完全放弃它。
关于ios - "CGLayer no longer recommended";这是普遍共识吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21738909/
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 6年前关闭。 Improve this questi
我是一名优秀的程序员,十分优秀!