美文网首页iOS性能优化
UItableView实现平滑滚动延迟加载图片

UItableView实现平滑滚动延迟加载图片

作者: 爱睡觉的魚 | 来源:发表于2020-01-17 14:16 被阅读0次

在项目中我们都遇到过这种情况,给tableViewCell添加图片,有时添加网络图片,在滑动过程中会有一点儿卡,这是在滑动过程中加载图片,为了使用户体验更好,程序看着更流畅。我们可以在滑动结束后再加载图片。

这里我们可以利用CFRunLoopMode的特性,我们知道RunLoop的mode有五种:kCFRynLoopDefaultMode:App的默认Mode,通常主线程是在这个Mode下运行

UITrackingRunLoopMode:界面跟踪Mode,用于ScrollView追踪触摸滑动,保证界面滑动时不受其他Mode影响

kCFRunLoopCommonModes:这是一个占位用的Mode,不是一种真正的Mode

UIInitializationRunLoopMode:在刚启动App时进入的第一个Mode,启动完成后不再使用

GSEventReceiveRunLoopMode:接受系统事件的内部Mode,通常用不到

这样我们可以将图片的加载放到NSDefaultRunLoopMode的mode中,这样在滚动UITrackingRunLoopMode这个mode时不会被加载而影响到。然后再利用performSelector: withObject: afterDelay:方法,这个方法在主线程繁忙的时候回延后执行,因此在发生触摸或是视图还在滚动时这个方法不会运行。关于performSelector: withObject: afterDelay:方法的使用请看这篇文章 https://www.jianshu.com/p/13b273937893

最后代码展示

[self.avatarImageView performSelector:@selector(setImage:)

withObject:downloadedImage

afterDelay:0

inModes:@[NSDefaultRunLoopMode]];

相关文章

  • UItableView实现平滑滚动延迟加载图片

    在项目中我们都遇到过这种情况,给tableViewCell添加图片,有时添加网络图片,在滑动过程中会有一点儿卡,这...

  • tableView上拉遮盖headerView

    总体布局 uitableview + uiview(设备视图),借用tableview滚动特性实现平滑滚动tabl...

  • 深入理解js

    延迟加载 (Lazyload) 三种实现方式 延迟加载也称为惰性加载,即在长网页中延迟加载图像。用户滚动到它们之前...

  • 【Android - 框架】之Glide的使用

    一、Glide简介: Glide是Google官方推荐的一个图片加载和缓存的开源库,它不仅能实现平滑的图片列表滚动...

  • 图片延迟加载方案

    图片延迟加载的原理是什么? 图片延迟加载的原理就是先不设置img的src属性,等合适的时机(比如滚动、滑动等)再把...

  • Glide 图片加载库入门

    一个加载和缓存图片的库,专为 Android 在实现平滑滚动展示图片上设计,当然普通的静态展示也就不成问题。它的功...

  • 图片懒加载 lazyLoad

    图片懒加载 图片的延迟加载最常见的是只加载网页显示在屏幕中的图片,如果用户没有滚动到网页靠下的部分,那图片就不用显...

  • 懒加载和预加载

    1)概念: 懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。预加载:提前加载图片...

  • jQuery图片延迟加载插件lazyload.js

    简介 lazyload.js用于长页面图片的延迟加载,视口外的图片会在窗口滚动到它的位置时再进行加载,这是与预加载...

  • UITableView 的完美平滑滚动

    UITableView 的完美平滑滚动 链接:http://ios.jobbole.com/84360/ 我曾在最...

网友评论

    本文标题:UItableView实现平滑滚动延迟加载图片

    本文链接:https://www.haomeiwen.com/subject/qnmczctx.html