Tag: 平滑滚动

iOS UITableViewCell优化

在我的应用程序中,我有一个包含自定义UITableViewCells的UITableView。 滚动是非常缓慢和缓慢,我需要解决这个问题。 每个单元格包含5-6个标签,几个button和一个图像。 我有一个单元格的xib,我放置button,标签和图像视图,但我把所有的图像设置在cellForRowAtIndexPath。 加载我使用的图像[UIImage imageNamed:@“”],我读的是更好的优化。 我也是重用细胞。 我也发现,即使我注释掉了,也没有设置图像,表格仍然是滞后的,只是标签设置了文本。 有没有人有任何build议,如何有一个相当复杂的表格单元,同时仍然有良好,平稳的performance? 将自定义单元格作为xib阻碍性能?

UITableView滚动不顺畅

我有我的UITableView UITableViewCell包含UIImageView的顺利滚动问题。 类似的问题可以在整个StrackOverflow中find,但没有一个提出的解决scheme帮助我完全摆脱了滞后。 我的情况很常见: 图像存储在应用程序存储(在我的示例在应用程序包) 图像可能有不同的尺寸(500×500,1000×1000,1500×1500) 我需要在UITableView中显示那些图像,其中UIImageView的大小是120×120(视网膜) 我遵循多个优化技巧,并设法优化滚动很多。 不幸的是,它仍然不完美。 这是我的场景: 首先我把所有的图像加载/处理/resize的逻辑移动到后台线程 UITableViewCell重用已启用 一旦UITableViewCell在视图中,我清除旧值(设置为空),并启动后台线程加载图像 在这一点上,我们在后台线程,我添加500毫秒的延迟,以避免经常设置新的图像(如果我们快速滚动)(见下面的解释) 如果UIImage存在于静态图像caching(具有UIImage实例的常规字典)中 – 取出一个并转到步骤9。 如果没有 – 从bundle(imageWithName)使用url加载新的图像到应用程序包(在现实世界的场景中,图像将被存储到应用程序存储,而不是捆绑) 一旦图像被加载,使用graphics上下文将其调整到120×120 将resize的图像保存到静态图像caching 在这一点上我们有实例到UIImage和进程是在后台线程。 从这里我们回到UI Thread与给定的图像 如果数据上下文被清除(例如UITableViewCell消失或被重用来显示另一个图像),我们跳过处理当前可用的图像。 如果数据上下文是相同的 – 分配UIImage与UIImageView与一个alphaanimation(UIView.Animate) 一旦UITableViewCell不在视图中 – 清除数据上下文 最初在开始新的后台线程来获取图像在这里(步骤1)是UIImagecaching检查没有后台线程。 在这种情况下,如果我们在caching中有图像,我们立即分配图像,并且在快速滚动期间引入了很大的滞后(我们只要立即获取图像就会分配图像)。 这些行在我下面的示例中进行了评论。 还有两个问题: 在滚动过程中的某一点,我仍然有一个小滞后(在我将新的UIImage分配给UIImageView的那一刻)。 (这个更明显),当你点击项目并从细节返回时,在返回导航animation结束之前有一个滞后。 任何build议如何处理这两个问题,或如何优化我的情况,表示赞赏 请考虑使用Xamarin编写的示例,但只要我在ObjectiveC中编写的应用程序也有相同的问题,我不相信Xamarin是问题的原因。 平滑的滚动testing应用程序