我正在开发一个iPad应用程序,上面有一个非常大的UITableView(大约10倍的屏幕宽度和高度),上面是一个UIScrollView,我可以水平滚动。
在每个UITableViewCell中,我添加了不同数量的UIViews。我的问题是滚动性能真的很差。所以我在谷歌上搜索了一个解决方案,但没有找到任何适合我的问题的东西。
我认为问题是滚动完成后整个屏幕都会重新绘制,但我不知道如何限制这一点......
任何人都可以提供解决方案吗?
谢谢。
您需要保持单元格的可重用性,并且仅加载可见区域中所需的视图。就像我们延迟加载图像一样。
提高性能的简单关键是不要在cellForRowAtIndexpath
中做耗时的任务。
您可以使用许多技巧来提高性能。例如,在后台线程中加载视图。
这篇SO帖子描述了各种技巧。
您需要执行 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; 来重新处理单元格。如果你还没有,你应该做的是:
在你的
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法,您需要:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease];
}
从Apple的文档中看一下。
希望这有帮助。