Corona中文站

强大、易学的跨平台(iOS/Android)开发框架。QQ群1:74390406(满) 群2:221929599

导航

iPhone 异步加载图片[附代码]
AsyncImageView.h文件
@interface AsyncImageView : UIView {
NSURLConnection* connection;
NSMutableData* data;
}
@end

AsyncImageView.m文件
@implementation AsyncImageView

- (void)loadImageFromURL:(NSURL*)url {
if (connection!=nil) { [connection release; }
if (data!=nil) { [data release; }
NSURLRequest* request = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0;
connection = [[NSURLConnection alloc
initWithRequest:request delegate:self;
//TODO error handling, what if connection is nil?
}

- (void)connection:(NSURLConnection *)theConnection
didReceiveData:(NSData *)incrementalData {
if (data==nil) {
data =
[[NSMutableData alloc initWithCapacity:2048;
}
[data appendData:incrementalData;
}

- (void)connectionDidFinishLoading:(NSURLConnection*)theConnection {

[connection release;
connection=nil;

if ([[self subviews count>0) {
[[[self subviews objectAtIndex:0 removeFromSuperview;
}

UIImageView* imageView = [[[UIImageView alloc initWithImage:[UIImage imageWithData:data autorelease;

imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.autoresizingMask = ( UIViewAutoresizingFlexibleWidth || UIViewAutoresizingFlexibleHeight );

[self addSubview:imageView;
imageView.frame = self.bounds;
[imageView setNeedsLayout;
[self setNeedsLayout;
[data release;
data=nil;
}

- (UIImage*) image {
UIImageView* iv = [[self subviews objectAtIndex:0;
return [iv image;
}

- (void)dealloc {
[connection cancel;
[connection release;
[data release;
[super dealloc;
}

@end

在tableview中具体使用
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"ImageCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier;

if (cell == nil) {
cell = [[[UITableViewCell alloc
initWithFrame:CGRectZero reuseIdentifier:CellIdentifier
autorelease;
} else {
AsyncImageView* oldImage = (AsyncImageView*)
[cell.contentView viewWithTag:999;
[oldImage removeFromSuperview;
}

CGRect frame;
frame.size.width=75; frame.size.height=75;
frame.origin.x=0; frame.origin.y=0;
AsyncImageView* asyncImage = [[[AsyncImageView alloc
initWithFrame:frame autorelease;
asyncImage.tag = 999;
NSURL* url = [imageDownload
thumbnailURLAtIndex:indexPath.row;
[asyncImage loadImageFromURL:url;

[cell.contentView addSubview:asyncImage;

return cell;
}
<< iOS关于隐藏键盘的几段代码使用xib文件来快速创建自定义风格的table view[独家图文 ] >>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 Copyright 2011-2015 BuildApp.Net. All Rights Reserved.