当前位置: 代码迷 >> Iphone >> iphone腾挪加载网络图片
  详细解决方案

iphone腾挪加载网络图片

热度:26   发布时间:2016-04-25 06:37:11.0
iphone移动加载网络图片
@interface AsyncImageView: UIView {    NSURLConnection * connection;    NSMutableData * data;}@end@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 * ) theConnectiondidReceiveData: (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] & gt; 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- (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;}
  相关解决方案