使用UITableViews进行UIImage性能和优化

时间:2009-09-22 18:28:56

标签: iphone optimization uitableview uiimage

我正在使用几个图像来设置UITableViewCells的样式,我想确保我正确地做事,首先要确保良好的内存管理,其次要确保事情尽可能快(我遇到了麻烦滚动的笨拙!)。

我知道使用[UIImage imageNamed:]会缓存图像的速度,所以可以用它来获取我的所有图像吗?或者更好的是每个UITableViewController只调用一次并将图像存储为实例变量,为我的所有单元重用相同的UIImage对象?

我在我的桌子和单元格中使用透明的PNG和清晰的彩色视图来获得我想要的外观。是否有任何关于确保尽可能快地渲染以确保表格视图滚动顺畅的提示?目前我只有大约10行(单元格)而且它已经非常缓慢了。我正在使用一个获取的结果控制器来获取我的数据,因此我认为不会导致它。

非常感谢,

迈克尔

3 个答案:

答案 0 :(得分:1)

使用透明度的提示不是。如果你有多个重叠元素,看看是否有某种方法可以预渲染透明效果 - 这几乎可以解决任何问题,这会破坏表滚动性能。

另一个重大打击是如果你没有正确地重复使用细胞。

获取的结果控制器不应该做任何事情来减慢速度。您可以尝试使用Instruments来确保...

答案 1 :(得分:0)

我想你最好为你的所有单元重用UIImage实例,这样你就可以保留它并确保在内存警告的情况下不释放它,保证你没有[UIImage] imageNamed:]的缓存。此外,保持平滑的提示是确保您没有重叠的视图,尤其是透明视图。

答案 2 :(得分:0)

  1. 如果您在所有表格单元格上使用相同的图像,那么最好通过+(UIImage)imageNamed:(NSString *)inName API从系统图像缓存中获取图像。

  2. 尝试使用UITableViewCell的dequeueReusableCell API来获取每个单元格。如果返回nil,则只创建一个新的单元格对象。

  3. 如果您的表格视图颜色是透明的(UIClearColor),则将表格视图的opaque属性设置为NO。