最近做一个项目,需要用到UITableView异步加载图片的例子,看到网上有一个EGOImageView的很好的例子。
但是由于,EGOImageView的实现比较复杂,于是自己就动手做了一个AsynImageView,同样可以实现EGOImageView的效果。
而且自己写的代码比较清晰,容易理解,同样可以实现指定placehoderImage以及指定imageURL,来进行图片的异步加载。
同时,如果图片已经请求过,则不会再重复请求网络,会直接读取本地缓存文件。
效果如下:
具体实现思路如下:
AsynImageView.h的文件内容:
#import <UIKit/UIKit.h>
@interface AsynImageView : UIImageView
{
NSURLConnection *connection;
NSMutableData *loadData;
}
//图片对应的缓存在沙河中的路径
@property (nonatomic, retain) NSString *fileName;
//指定默认未加载时,显示的默认图片
@property (nonatomic, retain) UIImage *placeholderImage;
//请求网络图片的URL
@property (nonatomic, retain) NSString *imageURL;
@end
AsynImageView.m中的文件内容:
#import "AsynImageView.h"
#import <QuartzCore/QuartzCore.h>
@implementation AsynImageView
@synthesize imageURL = _imageURL;
@synthesize placeholderImage = _placeholderImage;
@s