在UITableView图像上慢速滚动

我显示了很多直接从我的应用程序加载的图像(未下载)。 当我第一次滚动时,我的表格视图很慢。 所有我的细胞显示后,它变得光滑。 我不知道为什么。

我有一个我加载在viewDidLoad中的UIImage数组。 然后在我的tableview委托,我只是在给定的索引path获取图像,并将其设置为我的单元格的UIImageView。

你知道我怎样才能提高表演?

你可以阅读我刚刚提交的答案:

在CoreForRowAtIndexPath上从CoreData加载图像会减慢滚动速度

其基本思想是使用Grand Central Despatch将获取表格视图的代码移动到单独的线程,并在图像可用时将单元格填充到主线程中。 即使有延迟将图像从文件系统加载到内存中,您的滚动也将非常stream畅。

只是为了分享我已经修好了,而且效果很好。

1)将Cell的performSelectorInBAckground函数设置为传递的参数,该参数保存滚动视图或uiview以放置多个图层。

2)在后台函数中使用imagewithContents文件加载从应用程序包或本地文件存储的图像。

3)使用此代码将图像设置为imageView。

//// Start of optimisation - for iamges to load dynamically in cell with delay , make sure you call this function in performSelectorinBackground.///// //Setting nil if any for safety imageViewItem.image = nil; dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); dispatch_async(queue, ^{ UIImage *image = // Load from file or Bundle as you want dispatch_sync(dispatch_get_main_queue(), ^{ //Set the image to image view not, wither cell.imageview or [cell add subviw:imageview later ] [imageViewItem setImage:image]; [imageViewItem setNeedsLayout]; }); }); //// End of optimisation///// 

这将dynamic加载所有图像,并且比以前的缓慢和不平稳的行为更平滑地滚动表格视图。

祝一切顺利

我从你的问题中了解到,你的图像都被设置去,他们被加载到RAM(存储在一个数组,它是在viewDidLoad填充)。 在这种情况下,我希望看到确切的代码在cellForRowAtIndexPath为了帮助。 我的本能告诉我,那里正在做的事情不应该在主线上完成(正如他所build议的那样)。 事情是 – 如果它只是一个NSArray(最糟糕的情况下O(log(n)))的提取,你不应该看到性能的影响。

我知道你不下载图像,但我仍然build议在后台线程上执行任何非UI操作。 我写了一些可以帮助你的东西 。