2010-05-27 124 views

回答

6

因为它们被添加为子视图,并且绘制子视图需要很多工作,因为它们必须被合成。当Core Graphics或Core Animation使用这些子视图绘制多个单元格时更是如此。

Loren Brichter (atebits)解释它更好:

就像在Mac OS X,也有对iPhone 2个绘图系统。一个是CoreGraphics,另一个是LayerKit CoreAnimation。 CoreGraphics在CPU上绘图,CoreAnimation会根据它认为最快的部分绘图 - 最有可能是GPU。

iPhone上的GPU不喜欢融合,这就是为什么Apple建议您尽可能多地保留您的视图不透明的原因。有时候你别无选择 - 如果你在图片上有一个标签,你不得不使标签变成透明的,否则你会在文字上出现一个很大的丑陋块。

什么是开发人员要做的?当然...与CoreGraphics预混合到您自己的视图中。如果你按照需求将你的东西混合到一个静态视图中(例如当一个表视图移动屏幕上的一个单元格时),对于第一帧来说它会更贵一些,但是之后的每一帧CoreAnimation都只是处理一个大的,不透明的它喜欢的纹理。它不仅仅是混合。如果你考虑透支方面的情况,每个表格单元格有一个大视图是一个巨大的胜利,因为CoreAnimation只会触及屏幕上的一个给定像素一次而不是多次(可能取决于你的旧有多少重叠视图层次结构)。

+0

该链接似乎是下降:(我可能是错误的,虽然因为我在一个私人网络 – GoodSp33d 2016-07-26 06:18:18

+1

@ GoodSp33d:你说得对,atebits.com已经停了好几年了,好东西被存档;我现在我已经编辑了我的答案 – BoltClock 2016-07-26 07:39:36

0

老实说,我不知道该怎么回答。

我所知道的是,当我有一个非常“沉重”的UITableView,并且需要它滚动速度快,我使用的方法从特威特的创造者:

http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/

没有找到一个更好的比这个更方便。

+0

请不要将链接添加到您的应用或签名到您的答案 – iwasrobbed 2010-07-24 03:14:53

+0

感谢您花时间提出请求,我很高兴删除我的签名。 – camilo 2010-07-27 10:57:09