3分钟快捷创建高性能轮播图

发布于 2021-12-29 10:05:19 字数 1494 浏览 978 评论 0

概要:封装轮播图,混合加载网络图片和本地图片,实现UIImageView、UILabel的复用,使用内存缓存,磁盘缓存、多线程和runloop解决UI卡顿,定时器等问题。暂时未发现有任何bug,如果您遇到bug希望你能Issues我。

SLBannerViewDemo:https://github.com/TravelColor/SLBannerView
个人邮箱:songleitravel@163.com
****************************
//支持cocoapods
pod 'SLBannerView'
或者
pod 'SLBannerView', '~> 1.0.2'
****************************
思路及改进说明:
1. 构建基本UI
1.1 封装
2. 设置scrollView代理
3. 添加scrollView的image
4. 分页
5. 定时器滚动起来
6. 定时器线程阻塞问题:
原因:NSTimer 默认是放到系统的主线程的,当用户操作其他主线程任务时,会造成NSTimer的线程阻塞,用户停止其他操作时又会重启NSTimer
解决:设置timer在runloop中模式为CommonModes
7. 解决轮播图片过多的性能问题,循环重用ImageView
8. 添加xib创建方法
9. 巧用代理UIScrollViewDelegate,scrollViewDidScroll:定位当前正确的页数,找出最中间的哪个图片控件
10. 用SLBannerViewDelegate实现监听点击事件
11. 利用继承、内存缓存、磁盘缓存、异步并行多线程解决重复下载图片,UI不流畅的问题。先检查内存、磁盘中有没有,没有再下载,有就直接使用。
12. 修复bug,让其默认从第0页开始,给self.pageCtrl.currentPage = 0;,[imageView asynSetImage:self.slImages[0]];
13. 修复bug, 让其加载完成,就展示第二个imageView: self.scrollView.contentOffset = CGPointMake(BannerViewWidth, 0);

下载地址:http://www.wenjiangs.com/wp-content/uploads/2021/docimg35/d51a15931b46ec55635ece75249f44b8.zip

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文