我有一个uitableview,它在每个单元格中加载相当大的图像,并且单元格的高度根据图像的大小而变化。滚动性能不错,但有时会有些生涩。
我在FieryRobot博客上找到了这些技巧:
有没有人有任何改善uitableview滚动性能的提示?
Answers:
UITableViewCell
的drawRect:
,如果不惜一切代价尽量避免子视图(或者,如果你需要的标准的辅助功能,内容画面的drawRect:
)UITableViewCell
的图层不透明(如果有的话,内容视图也一样)UITableView
示例/文档推荐的reusableCellIdentifier功能UIImage
s中的渐变/复杂的图形效果UITableViewCell
,请不要使用Nib,而应使用代码编写。它比加载Nib文件快得多。Tweetie背后的开发人员对此进行了广泛的编写,并提供了一些代码来演示该应用程序是如何完成的。基本上,他/她主张为每个表单元格提供一个自定义视图,并手动进行绘制(而不是使用Interface Builder进行子视图以及其他选项)。
此外,Apple在其TableViewSuite教程中更新了自己的TableView示例代码(也许是对此做出的回应?)
UITableView滚动的#1性能杀手是在任何单元格视图层上绘制阴影,因此,如果滚动性能很重要,则不要绘制阴影,除非基本上不会降低主线程的速度。
认为必须这样说,因为没有一个公认的答案提到阴影和层。:+)
UITableView
滚动性能的任何问题都可以使用其他答案中已经描述的技术来解决。但是,很多时候性能不佳是由于某种固有的错误或重复性造成的。
这一事实UITableView
重用细胞,而事实上,每一个细胞都需要有自己的形象-一起使得该解决方案有点复杂。通过一般方法的解决方式,在这里我总结了应注意的事项:
[tableView reloaddata]
cellForRowAtIndexPath
,包括将设置数组的正确数据模型对象中的数据(文本)的代码。为避免出现问题,请参阅本表中有关在表视图内延迟加载图像的教程。