CommonTableCollectView:图片懒加载,不使用的image大量释放
2015-12-14 18:47
555 查看
允许转载,但记得标注
demo:点击打开链接
效果如图:
继承CommonTableCollectView里面的CommonCell,实现以下方法:
//检测到tableView的滚动状态,在此可以进行一些回收内存的操作,如离开当前画面的cell内存回收
-(void)commonTableView:(CommonTableView *)tableView scrollType:(ScrollType)scrollType;
ScrollType是一个枚举:
#pragma mark --- tableView的滚动状态 ---
typedef NS_ENUM(NSInteger, ScrollType) {
scrollViewDidScroll,//正在滚动
scrollViewDidZoom,//当scrollView缩放时
scrollViewWillBeginDragging,//当开始滚动视图时,执行该方法。一次有效滑动(开始滑动,滑动一小段距离,只要手指不松开,只算一次滑动),只执行一次。
scrollViewWillEndDragging,//滑动scrollView,并且手指离开时执行。一次有效滑动,只执行一次。当pagingEnabled属性为YES时,不调用,该方法
scrollViewDidEndDragging,//滑动视图,当手指离开屏幕那一霎那,调用该方法。一次有效滑动,只执行一次。decelerate,指代,当我们手指离开那一瞬后,视图是否还将继续向前滚动(一段距离),经过测试,decelerate=YES
scrollViewWillBeginDecelerating,//滑动减速时调用该方法
scrollViewDidEndDecelerating,//滚动视图减速完成,滚动将停止时,调用该方法。一次有效滑动,只执行一次。
scrollViewDidEndScrollingAnimation,//当滚动视图动画完成后,调用该方法,如果没有动画,那么该方法将不被调用
scrollViewWillBeginZooming,
scrollViewDidEndZooming,//当缩放结束后,并且缩放大小回到minimumZoomScale与maximumZoomScale之间后(我们也许会超出缩放范围),调用该方法。
scrollViewShouldScrollToTop,
scrollViewDidScrollToTop
};
//关键代码
-(void)commonTableView:(CommonTableView *)tableView scrollType:(ScrollType)scrollType{
[super commonTableView:tableView scrollType:scrollType];
//滚动的状态,滚动在减速,滚动已经停止,滚动的手指离开了屏幕
if (scrollType==scrollViewWillBeginDecelerating ||
scrollType == scrollViewDidEndDecelerating ||
scrollType == scrollViewDidEndDragging
) {
//加载网络图片
[self.imageView setImageWithURL:[NSURL URLWithString:absoluteString] placeholderImage:nil];
}else{
//tableView在滚动的时候,并且cell在不显示的时候,释放内存
if (![self isShow]) {
self.imageView.image = nil;
}
}
}
demo:点击打开链接
效果如图:
继承CommonTableCollectView里面的CommonCell,实现以下方法:
//检测到tableView的滚动状态,在此可以进行一些回收内存的操作,如离开当前画面的cell内存回收
-(void)commonTableView:(CommonTableView *)tableView scrollType:(ScrollType)scrollType;
ScrollType是一个枚举:
#pragma mark --- tableView的滚动状态 ---
typedef NS_ENUM(NSInteger, ScrollType) {
scrollViewDidScroll,//正在滚动
scrollViewDidZoom,//当scrollView缩放时
scrollViewWillBeginDragging,//当开始滚动视图时,执行该方法。一次有效滑动(开始滑动,滑动一小段距离,只要手指不松开,只算一次滑动),只执行一次。
scrollViewWillEndDragging,//滑动scrollView,并且手指离开时执行。一次有效滑动,只执行一次。当pagingEnabled属性为YES时,不调用,该方法
scrollViewDidEndDragging,//滑动视图,当手指离开屏幕那一霎那,调用该方法。一次有效滑动,只执行一次。decelerate,指代,当我们手指离开那一瞬后,视图是否还将继续向前滚动(一段距离),经过测试,decelerate=YES
scrollViewWillBeginDecelerating,//滑动减速时调用该方法
scrollViewDidEndDecelerating,//滚动视图减速完成,滚动将停止时,调用该方法。一次有效滑动,只执行一次。
scrollViewDidEndScrollingAnimation,//当滚动视图动画完成后,调用该方法,如果没有动画,那么该方法将不被调用
scrollViewWillBeginZooming,
scrollViewDidEndZooming,//当缩放结束后,并且缩放大小回到minimumZoomScale与maximumZoomScale之间后(我们也许会超出缩放范围),调用该方法。
scrollViewShouldScrollToTop,
scrollViewDidScrollToTop
};
//关键代码
-(void)commonTableView:(CommonTableView *)tableView scrollType:(ScrollType)scrollType{
[super commonTableView:tableView scrollType:scrollType];
//滚动的状态,滚动在减速,滚动已经停止,滚动的手指离开了屏幕
if (scrollType==scrollViewWillBeginDecelerating ||
scrollType == scrollViewDidEndDecelerating ||
scrollType == scrollViewDidEndDragging
) {
//加载网络图片
[self.imageView setImageWithURL:[NSURL URLWithString:absoluteString] placeholderImage:nil];
}else{
//tableView在滚动的时候,并且cell在不显示的时候,释放内存
if (![self isShow]) {
self.imageView.image = nil;
}
}
}
相关文章推荐
- ImportError: Twisted requires zope.interface 3.6.0 or later.
- 必须要转:ArcGIS 客户端跨版本连接Oracle 地理数据库时的兼容性说明
- 图的定义,存储结构是邻接矩阵(无向图,包含带权图)
- JS 第二记
- java sax解析 (这篇真的非常好 易懂适合入门 个人觉得其他类似这种技术层次的博客没有这篇懂得快)
- HBase配置
- JSON解析之——Android
- 单例设计的定义
- 排序算法 快速排序 归并排序 堆排序
- js 分页
- Git 常用命令整理
- 【Python真的很强大】多线程的使用
- 跟我一起写 Makefile(一)
- Qt官方开发环境生成的exe发布方式--使用windeployqt
- 浏览器-07 chromium 渲染1
- Java Object Model(一)
- 精选强大的常用linux命令
- elasticsearch mapping 学习
- 2015 ACM/ICPC Asia Regional Shanghai Online --HDU 5478
- 修改tomcat配置文件启动多个tomcat