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