@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;}
详细解决方案
iphone腾挪加载网络图片
热度:26 发布时间:2016-04-25 06:37:11.0
相关解决方案
- iphone 模拟器,该如何处理
- 有哪位高手用过JPlayer ,进来一下,IPHONE 等设备播放有关问题
- 单个人去做手机开发选什么平台好?android,iphone?解决办法
- 对于手机android iphone ipad 在线播放视频,服务器需要哪些要求呢?该怎么解决
- >>> PayPal mobile for Android / iPhone 开发包 开放啦!
- iphone + html5是个美模式
- ipad 和 iphone 上的有关问题
- iPhone 筹建PHP版Push服务器 实例操作
- iphone 获取UIWebView内Html步骤
- iPhone Android Web开发(要略)
- 一九七零年// iPhone “变砖”后可继续正常使用的解决方案
- 怎么禁止 iPhone Safari video标签视频自动全屏
- iPhone 六的自适应布局
- 腾挪端实现 iphone android 小图标 文字排版
- iPhone:动态获取UILabel的高度跟宽度
- 有人模仿小弟我的脸、有人模仿小弟我的面,iPhone 6的假面舞会
- iPhone @2x与@3x的图片加载有关问题
- iPhone 6 / 6 Plus 出现后,怎么改进工作流以实现一份设计稿支持多个尺寸
- jQuery 判断iPad、iPhone、Android是横屏仍是竖屏
- 检测香港特别行政区 iPhone 6 库存信息
- iPhone、iPad挟制关机
- iPhone How-to:怎么清除控件的Target-Action
- 为啥 iPhone 的拍照效果比其它手机优秀
- iPhone 跟 Galaxy快速拍照原理详细分析
- 5个方法,将 storyboard 从 iphone 版转变为 ipad 版
- iPhone 六是否比以前的iPhone更加帅
- iphone 获取手机现阶段内存大小
- Hacking EV3系列之7:iPhone 手势无线控制LEGO EV3 Gyro Boy 机器人
- iphone 开发 有外设 蓝牙设备,该怎么处理
- jQuery 判断iPad、iPhone、Android是横屏仍是竖屏(window.orientation实现)