Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UITableView/UIScrollView滚动优化/性能_Iphone_Ios_Uitableview_Uiscrollview - Fatal编程技术网

Iphone UITableView/UIScrollView滚动优化/性能

Iphone UITableView/UIScrollView滚动优化/性能,iphone,ios,uitableview,uiscrollview,Iphone,Ios,Uitableview,Uiscrollview,我正在开发一个iPad应用程序,在这个应用程序上我有一个非常大的UITableView(大约10倍的屏幕宽度和高度),上面有一个UIScrollView,我可以水平滚动 在每个UITableViewCell中,我添加了不同数量的UIView。我的问题是滚动性能非常差。所以我在谷歌上搜索了一个解决方案,但没有找到任何适合我的问题 我认为问题是,当滚动完成时,整个屏幕被重新绘制,但我不知道如何限制这一点 有人能提供解决方案吗 谢谢。您需要保持单元的可重用性,并且只在可见区域加载所需的视图。与我们延迟

我正在开发一个iPad应用程序,在这个应用程序上我有一个非常大的UITableView(大约10倍的屏幕宽度和高度),上面有一个UIScrollView,我可以水平滚动

在每个UITableViewCell中,我添加了不同数量的UIView。我的问题是滚动性能非常差。所以我在谷歌上搜索了一个解决方案,但没有找到任何适合我的问题

我认为问题是,当滚动完成时,整个屏幕被重新绘制,但我不知道如何限制这一点

有人能提供解决方案吗


谢谢。

您需要保持单元的可重用性,并且只在可见区域加载所需的视图。与我们延迟加载图像相同。

您需要保持单元格的可重用性,并且只加载可见区域中所需的视图。就像我们延迟加载图像一样。

提高性能的简单关键不是在
cellforrowatinexpath
中执行耗时的任务

您可以使用许多技巧来提高性能。例如,在后台线程中加载视图


这描述了各种技巧。

提高性能的简单关键是不要在
cellforrowatinexpath
中执行耗时的任务

您可以使用许多技巧来提高性能。例如,在后台线程中加载视图


这描述了各种技巧。

您需要执行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];
}
看看苹果的文档


希望这有帮助。

您需要执行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];
}
看看苹果的文档


希望这有帮助。

您能提供一些其他信息吗?链接还是示例?谢谢看下面的例子,你会知道如何实现它,你能提供一些额外的信息吗?链接还是示例?谢谢看一看下面的例子,你会知道如何实现它,当我不在cellForRowAtIndexpath中时,我应该在哪里绘制单元格的视图?你可以惰性地加载它。我的意思是把它放在一个后台线程中。缓存它以备下次使用。这里的要点是,当您在cellForRowAtIndexPath中执行繁重的任务时,您肯定会面临性能问题。SO链接包含许多提高性能的技巧。当不在cellForRowAtIndexpath中时,我还应该在哪里绘制单元格视图?您可以延迟加载它。我的意思是把它放在一个后台线程中。缓存它以备下次使用。这里的要点是,当您在cellForRowAtIndexPath中执行繁重的任务时,您肯定会面临性能问题。SO链接包含许多提高性能的技巧。