iOS tableView滑动卡顿的问题之一
来源:互联网 发布:千锋php视频教程 编辑:程序博客网 时间:2024/05/16 15:15
修改前计算cell高度的代码
let data = NSData(contentsOf: URL(string: self.model?.details?[indexPath.row-2] ?? "")!) guard data != nil else { return 0 } let image = UIImage.init(data: data! as Data) print(image?.size ?? 0) cell.goodsImage.backgroundColor = UIColor.red return (image?.size.height)! * kWidth/(image?.size.width)!
其中NSData(contentsOf: URL(string)方法是在主线程中执行,转为data比较耗时,导致tableView滑动的卡顿。所以在检查不是图片加载的问题后,对cell高度的返回进行了优化
//找出缓存中的图片并获得尺寸 let imageCache = SDImageCache.shared() var image = UIImage() //从缓存或磁盘中能找到 if imageCache?.imageFromMemoryCache(forKey: self.model?.details?[indexPath.row-2]) != nil || imageCache?.imageFromDiskCache(forKey: self.model?.details?[indexPath.row-2]) != nil { image = (imageCache?.imageFromMemoryCache(forKey: self.model?.details?[indexPath.row-2]))! return (image.size.height) * kWidth/(image.size.width) } else { //本地找不到 let data = NSData(contentsOf: URL(string: self.model?.details?[indexPath.row-2] ?? "")!) guard data != nil else { return 0 } let image = UIImage.init(data: data! as Data) return (image?.size.height)! * kWidth/(image?.size.width)! }
利用SDWebImage框架的强大缓存机制,先在缓存中查找要加载的图片,有的话直接拿其尺寸来用,没有找到的图片就通过model数据转化data进而得到图片信息。
我想 找不到的情况应该不会存在吧,毕竟tableView的代理方法先执行的cell加载,包括了图片加载,执行cell高度代理时,对应图片的缓存都已经存在了。
阅读全文
1 0
- iOS tableView滑动卡顿的问题之一
- iOS tableView卡顿的优化
- ios 滑动卡顿
- iOS TableView优化的两个方法(优化卡顿)
- 优化tableView的卡顿
- overflow-y在ios上滑动卡顿问题
- html5页面在ios滑动卡顿问题
- 解决页面使用overflow: scroll在iOS上滑动卡顿的问题
- 解决ios手机端div是overflow: auto;引起的内容滑动卡顿问题
- html 滑动卡顿问题
- TableView的性能优化-主要针对滑动时候出现的卡顿现象
- TableView的性能优化-主要针对滑动时候出现的卡顿现象
- IOS中的frame 和 tableView的滑动问题
- IOS中的frame 和 tableView的滑动问题
- ios键盘弹起tableView的滑动区域问题
- tableview 加载图片卡顿问题
- iOS解决滑动页面卡顿的基本技巧
- ios端页面滚动出现卡顿的原因之一
- VC++ 中LoadLibrary的路径问题
- Comparing system calls and C libraries
- 棋盘问题
- BZOJ 3065 带插入区间K小值
- Shell 定时5分钟一次监控Tomcat状态,自动重启
- iOS tableView滑动卡顿的问题之一
- Android之xml解析和json解析
- 【线段树-区间更新求区间和】CDOJ 1057
- 《Java并发编程实战》笔记
- 尼姆博弈(Nimm Game)
- POJ 1791 Heavy Transportation(最大生成树)
- 【数据结构】中树的三种遍历方式详解
- hdu2033 人见人爱A+B(C语言)
- Solr 运维管理监控