但是由于,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;
- @property (nonatomic, retain) NSString *imageURL;
-
- @end
AsynImageView.m中的文件内容:
上面的AsynImageView的.h和.m文件,就是所要实现的核心代码。如果想要调用AsynImageView,则只需执行如下代码即可:(需导入
#import"AsynImageView.h")
- asynImgView = [[AsynImageView alloc] initWithFrame:CGRectMake(0, 5, 200, 100)];
- asynImgView.placeholderImage = [UIImage imageNamed:@"place.png"];
- asynImgView.imageURL = [NSString stringWithFormat:@"http://images.17173.com/2012/news/2012/10/10/lj1010sb10ds.jpg"];
- [self.view addSubView:asynImgView];
下面是我实现的UITableView异步加载图片的程序链接,就是上面的效果图的程序完整代码,大家可以参考一下:
http://download.csdn.net/detail/enuola/5112070
如有不恰当的地方,还望指点。
另外,图片的缓存可以定期进行清理,在此处没有写出清理代码,可以自行添加。