没有合适的资源?快使用搜索试试~ 我知道了~
主要介绍了举例讲解iOS中延迟加载和上拉刷新/下拉加载的实现,语言依然为传统的Objective-C,需要的朋友可以参考下
资源推荐
资源详情
资源评论
举例讲解举例讲解iOS中延迟加载和上拉刷新中延迟加载和上拉刷新/下拉加载的实现下拉加载的实现
主要介绍了举例讲解iOS中延迟加载和上拉刷新/下拉加载的实现,语言依然为传统的Objective-C,需要的朋友可以
参考下
lazy懒加载懒加载(延迟加载延迟加载)UITableView
举个例子,当我们在用网易新闻App时,看着那么多的新闻,并不是所有的都是我们感兴趣的,有的时候我们只是很快的滑过,想要快
速的略过不喜欢的内容,但是只要滑动经过了,图片就开始加载了,这样用户体验就不太好,而且浪费内存.
这个时候,我们就可以利用lazy加载技术,当界面滑动或者滑动减速的时候,都不进行图片加载,只有当用户不再滑动并且
减速效果停止的时候,才进行加载.
刚开始我异步加载图片利用SDWebImage来做,最后试验的时候出现了重用bug,因为虽然SDWebImage实现了异步加
载缓存,当加载完图片后再请求会直接加载缓存中的图片,注意注意注意,关键的来了,如果是lazy加载,滑动过程中是不进行网络请
求的,cell上的图片就会发生重用,当你停下来能进行网络请求的时候,才会变回到当前Cell应有的图片,大概1-2秒的延迟吧(不算延
迟,就是没有进行请求,也不是没有缓存的问题).怎么解决呢?这个时候我们就要在Model对象中定义个一个UIImage的属性,异步
下载图片后,用已经缓存在沙盒中的图片路径给它赋值,这样,才cellForRowAtIndexPath方法中,判断这个UIImage对象是否为空,
若为空,就进行网络请求,不为空,就直接将它赋值给cell的imageView对象,这样就能很好的解决图片短暂重用问题.
@下面我的代码用的是自己写的异步加载缓存类,SDWebImage的加载图片的懒加载,会在后面的章节给出.(为什么不
同呢,因为SDWebImage我以前使用重来不关心它将图片存储在沙盒中的名字和路径,但是要实现懒加载的话,一定要得到图片路
径,所以在找SDWebImage如何存储图片路径上花了点时间)
复制代码 代码如下:
@model类
#import <Foundation/Foundation.h>
@interface NewsItem : NSObject
@property (nonatomic,copy) NSString * newsTitle;
@property (nonatomic,copy) NSString * newsPicUrl;
@property (nonatomic,retain) UIImage * newsPic; // 存储每个新闻自己的image对象
- (id)initWithDictionary:(NSDictionary *)dic;
// 处理解析
+ (NSMutableArray *)handleData:(NSData *)data;
@end
#import "NewsItem.h"
#import "ImageDownloader.h"
@implementation NewsItem
- (void)dealloc
{
self.newsTitle = nil;
self.newsPicUrl = nil;
self.newsPic = nil;
[super dealloc];
}
- (id)initWithDictionary:(NSDictionary *)dic
{
self = [super init];
if (self) {
self.newsTitle = [dic objectForKey:@"title"];
self.newsPicUrl = [dic objectForKey:@"picUrl"];
//从本地沙盒加载图像
ImageDownloader * downloader = [[[ImageDownloader alloc] init] autorelease];
self.newsPic = [downloader loadLocalImage:_newsPicUrl];
}
return self;
资源评论
weixin_38655780
- 粉丝: 3
- 资源: 954
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功