因为它们被添加为子视图,而绘制子视图需要进行合成,所以这是一项繁重的工作。当Core Graphics或Core Animation绘制带有这些子视图的多个单元格时,情况更加复杂。Loren Brichter(atebits)在博客中解释得更好:与Mac OS X一样,在iPhone上有两种绘图系统。一种是CoreGraphics,另一种是LayerKit CoreAnimation。CoreGraphics在CPU上进行绘图,CoreAnimation在它认为最快的地方进行绘图,很可能是GPU。iPhone上的GPU不喜欢混合,这就是为什么苹果建议您尽可能保持视图的不透明性。有时您别无选择 - 如果您在图像上有一个标签,则必须使标签透明,否则文本周围会出现一个丑陋的大块。开发人员该怎么办?当然是预先混合……使用CoreGraphics进入您自己的视图。如果您将自己的内容混合到单个静态视图中,可以在需要时(例如,当表视图将单元格移动到屏幕上时)稍微增加一点开销,但是每个帧之后,CoreAnimation只处理一个大的、不透明的纹理……它很喜欢。这不仅仅是混合。如果您考虑重绘中发生的情况,每个表格单元只有一个大视图是一个巨大的胜利,因为CoreAnimation只会在屏幕上触摸单个给定像素一次,而不是多次(可能取决于旧视图层次结构有多少重叠)。
老实说,我不确定该怎么回答。 我知道的是,当我有一个非常“繁重”的UITableView并且需要快速滚动它时,我会使用Tweetie的创作者的方法: http://blog.atebits.com/2008/12/fast-scrolling-in-tweetie-with-uitableview/ 从未找到比这更好的方法。