为了澄清这个问题的目的: 我知道如何使用 subview 和 draRect 创建复杂的视图。我正在努力完全理解什么时候和为什么要用一个而不是另一个。
我也明白,提前那么多时间进行优化,并在进行任何分析之前以更困难的方式进行一些工作,这是没有意义的。考虑到我对这两种方法都很满意,现在真的需要更深入的理解。
我的许多困惑来自于学习如何使表格视图滚动性能真正平滑和快速。当然,这个方法的原始源代码来自 iPhone 的 推特背后的作者(以前是 Twittie)。从本质上看,使用大量的子视图会降低渲染速度,因为它们有大量的开销,并且不断地在其父视图上重新组合。
公平地说,这是在3GS 刚刚崭露头角的时候写的,从那时起,苹果设备已经变得更快了。对于高性能表来说,这种方法仍然是 互联网和其他地方的 经常 建议。事实上,它是 苹果的表示例代码中的一个建议方法,已经在几个 WWDC 视频(IOS 开发者实用绘图)和许多 iOS编程书籍中被建议过。
甚至还有 好看的工具来设计图形并为其生成核心图形代码。
所以一开始我相信“核心图形的存在是有原因的,它是快速的!”
但是一旦我想到“尽可能支持核心图形”这个想法,我就开始发现 draRect 通常会导致应用程序的响应性差,内存非常昂贵,并且真的会让 CPU 承担很大的负担。基本上,我应该“ 避免重写”(WWDC 2012 IOS 应用程序性能: 图形和动画)
所以我想,一切都很复杂。也许你可以帮助我和其他人理解使用 draRect 的时间和原因?
我看到了一些使用核心图形的明显情况:
我看到的情况是避免核心图形:
所以赐予你的知识。在什么情况下可以使用 draRect/Core Graphics (也可以通过子视图实现) ?什么因素导致你做出这个决定?如何/为什么在一个自定义的视图中绘制推荐黄油平滑的表格单元格滚动,但苹果建议 draRect 反对一般性能的原因?那么简单的背景图片呢(什么时候使用 CG 创建它们,而不是使用可调整大小的 png 图片) ?
制作有价值的应用程序可能不需要对这个主题有深入的理解,但是我不喜欢在不能解释原因的情况下在技术之间做出选择。我的大脑在生我的气。
感谢大家提供的信息,这里有一些澄清的问题: