我正在开发类似Facebook的iPhone应用程序,但用途不同。我在UITableView
中的每一行都有一系列数据,即内容,照片,喜欢,评论,标题等。我有自定义单元格,继承{{1我在其中创建了所有的UI对象,例如UITableviewcell
,UIIMageView
,UILabel
等。滚动我的UIButton
时,我会将数据提供给此自定义单元格它工作正常。
我的问题是滚动速度!
每当我滚动时,它都会被击中并且滚动速度很慢。我的所有UI组件分配都在主线程中完成。
有没有办法提高滚动速度或在单独的线程中为我的UI组件赋值?
答案 0 :(得分:2)
问题是,All my UI components assignment are done in main thread.
!!
不应使用主线程来获取网址或其他资源。它会影响用户体验。获取图像URL等应该在单独的后台线程中执行,然后在下载完成时使用图像数据更新主线程。这应该可以解决您的问题。
还要弄清楚在主线程中执行了哪些任务,看看哪些任务与UI无关,将这些任务移到后台线程......
答案 1 :(得分:0)
您可以通过以下方式执行此操作:
1)拍摄自定义的tableview单元格。 (没有必要,但对于外观漂亮和优化的代码更好)。
2)在单元格中实现图像的LazyLoading。
延迟加载是快速滚动和内存优化的好方法。
您将在表格视图中准备好延迟加载演示,而apple也提供相同的演示。
这将解决您的问题。
干杯和快乐的编码!
答案 2 :(得分:0)
由于下载图像而出现此问题。当您向下滚动表格并释放其他单元格时,将创建表格单元格。当创建单元格时,它会下载该单元格的图像,这就是当时主线程暂停的原因。下载图像时,它会移动到下一个单元格。
您需要在不在主线程中的另一个线程中下载图像。 已经提供了developers.apple.com上的示例代码,请查看此内容。我认为这有助于你。
答案 3 :(得分:0)
尝试以下链接在tableview中创建延迟加载,这将使您的tableview滚动顺畅
https://github.com/enormego/EGOImageLoading
http://developer.apple.com/library/ios/#samplecode/LazyTableImages/Introduction/Intro.html
快乐编码!!!!
答案 4 :(得分:0)
我不知道我是否真的得到了你所要求的东西,但是当你滚动你的桌面视图时,它看起来是否落后了?因为提取数据?
试试这个: https://github.com/rs/SDWebImage
说明很容易理解和遵循..这就是我尝试制作Youtube Feed时所做的事情(包括图像,视频标题,视频描述,发布日期等)。希望它可以帮到你
答案 5 :(得分:0)
我使用AsyncImageView在UITableViewCells