UITableView上下滚动卡顿(获取网络数据,下载图片之后)
来源:互联网 发布:通达信股票行情软件 编辑:程序博客网 时间:2024/05/11 00:58
今天遇到一个问题,从网络上,下载图片之后tableview上下滚动会很卡 通过上网查资料,找到解决办法 因为下载图片的时候是在主线程进行的 通过开辟一个子线程去下载图片 tableview上下滚动就不卡了。
在iOS应用中,UITableView应该是使用率最高的视图之一了。iPod、时钟、日历、备忘录、Mail、天气、照片、电话、短信、 Safari、App Store、iTunes、Game Center⋯几乎所有自带的应用中都能看到它的身影,可见它的重要性。
然而在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是table cell中包含图片的情况时。
实际上只要针对性地优化一下,这种问题就不会有了。有兴趣的可以看看 LazyTableImages这个官方的例子程序,虽然也要从网上下载图片并显示,但滚动时丝毫不卡。
下面就说说我对UITableView的了解。不过由于我也是初学者,或许会说错或遗漏一些,因此仅供参考。
首先说下UITableView的原理。有兴趣的可以看看 《About Table Views in iOS-Based Applications》。
UITableView是UIScrollView的子类,因此它可以自动响应滚动事件(一般为上下滚动)。
它 内部包含0到多个UITableViewCell对象,每个table cell展示各自的内容。当新cell需要被显示时,就会调用tableView:cellForRowAtIndexPath:方法来获取或创建一个 cell;而不可视时,它又会被释放。由此可见,同一时间其实只需要存在一屏幕的cell对象即可,不需要为每一行创建一个cell。
此 外,UITableView还可以分为多个sections,每个区段都可以有自己的head、foot和cells。而在定位一个cell时,就需要2 个字段了:在哪个section,以及在这个section的第几行。这在iOS SDK中是用NSIndexPath来表述的,UIKit为其添加了indexPathForRow:inSection:这个创建方法。
在设置数据模型的model中 设置数据时,如下
- (void)setGoods:(XHLGoods *)goods
{
_goods = goods;
//通过开辟一个子线程来下载图片
NSThread *thread = [[NSThread alloc]initWithTarget:self
selector:@selector(downImage) object:nil];
[thread start];
self.Title.text = goods.Title;
self.KanDian.text = goods.KanDian;
self.Price.text = goods.Price;
}
- (void)downImage
{
self.BackGroudImage.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURLURLWithString:_goods.imageUrl]]];
}
- UITableView上下滚动卡顿(获取网络数据,下载图片之后)
- ListView优化使用imageLoader下载和缓存图片,图片异步加载,解决图片多了之后容易卡顿。
- 图片上下滚动
- 图片上下滚动效果
- 图片上下间歇滚动
- 图片上下滚动
- 图片上下滚动特效
- 关于图片解压缩,导致scrollView滚动卡顿
- listview item 高度无效 + 图片放错 滚动卡顿
- PullToRefreshListView 获取网络数据实现上下拉刷新加载数据
- jquery Xslider 插件焦点图片特效图片淡隐淡现、图片上下滚动、图片左右滚动、选项卡
- 文字或图片上下滚动
- UITableView滑动卡顿解决方案
- UITableView的卡顿优化
- #UITableView滑动卡顿优化
- 图片的水平滚动和上下滚动
- 图片的滚动效果(上下滚动)
- Js图片上下无缝滚动,可控滚动
- Python正则表达式实例演练
- Linux系统调用和库函数调用
- 用两个栈实现队列
- TFT液晶屏使用自建的英文字库
- Linux 内核态与用户态
- UITableView上下滚动卡顿(获取网络数据,下载图片之后)
- SDUT 1519 数据结构实验之链表八:Farey序列
- 多元回归分析r语言代码
- HDU 4974 A simple water problem
- gym 100430 G【贪心+map瞎搞】
- Android 5.1 Contacts源码分析(三):Contacts模块Fargment结构
- FastCGI简介
- 我的Docker学习之旅<三>
- httppost 远程服务器返回错误: (400) 错误的请求错误