iOS学习笔记——网络资源下载(下载图片)
来源:互联网 发布:返利能看到淘宝订单吗 编辑:程序博客网 时间:2024/06/11 19:01
根据获取的URL地址,通过解析处理,在连接网络的情况下,下载图片。
首先创建一个包含图片URL的.plist文件,如图所示:
创建一个LinCell类,继承于UITableViewCell,用于绘制表视图的行信息。此处是创建活动标志,记录图片是否下载完毕。
在.h文件里代码:
@interface LinCell : UITableViewCell//创建活动标志对象@property (retain, nonatomic) UIActivityIndicatorView * pActivityView;@end在.m文件里代码:
@implementation LinCell//释放创建的对象- (void)dealloc{ [_pActivityView release]; [super dealloc];}- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if (self) { //初始化活动标志 self.pActivityView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; //设置活动标志的范围 [self.pActivityView setFrame:CGRectMake(10, 10, 40, 40)]; //把活动标志添加到当前视图 [self addSubview:self.pActivityView]; } return self;}- (void)setSelected:(BOOL)selected animated:(BOOL)animated{ [super setSelected:selected animated:animated];}@end在视图控制器中,需要遵循UITableViewDataSource协议和UITableViewDelegate协议。下载的过程把每个下载事件放入线程池中,由系统管理。
在.h文件中代码:
@interface LinViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>//创建表视图对象@property (retain, nonatomic) UITableView * mTableView;//创建数组对象@property (retain, nonatomic) NSArray * mArray;//创建线程池对象@property (retain, nonatomic) NSOperationQueue * mQueue;@end在.m文件里的代码:(需要前导入LinCell类)
@implementation LinViewController//释放创建的对象- (void)dealloc{ [_mTableView release]; [_mArray release]; [_mQueue release]; [super dealloc];}- (void)viewDidLoad{ [super viewDidLoad]; //初始化表视图 self.mTableView = [[UITableView alloc]initWithFrame:self.view.frame style:UITableViewStylePlain]; //设置表视图的委托对象 self.mTableView.dataSource = self; self.mTableView.delegate = self; //把表视图添加到当前视图中 [self.view addSubview:self.mTableView]; //获取.plist文件的路径 NSString * pPath = [[NSBundle mainBundle]pathForResource:@"myData" ofType:@"plist"]; //初始化数组,存储.plist文件的内容 self.mArray = [[NSArray alloc]initWithContentsOfFile:pPath]; //初始化线程池 self.mQueue = [[NSOperationQueue alloc]init];}#pragma mark---UITableViewDataSource//获取表视图的行数- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [self.mArray count];}//渲染表视图的每一行- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ //设置静态字符串,作为标记 static NSString * identifer = @"identifer"; //获取缓存中的cell内容 LinCell * pCell = (LinCell *)[tableView dequeueReusableCellWithIdentifier:identifer]; //判断如果为空则创建新的cell if (nil == pCell) { pCell = [[LinCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifer]; } //设置活动标志开始运行,表示进度开始 [pCell.pActivityView startAnimating]; //创建子线程 NSInvocationOperation * pInvocation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(downLoadImage:) object:indexPath]; //将线程放入线程池,由线程池去管理 [self.mQueue addOperation:pInvocation]; return pCell;}//下载图片的方法,必须在网络连接的情况下- (void)downLoadImage:(NSIndexPath *)path{ //获取表视图行数 NSInteger row = [path row]; //获取数组中相应为止的元素 NSString * pString = [self.mArray objectAtIndex:row]; //转化为RUL地址 NSURL * pURL = [NSURL URLWithString:pString]; //将网络资源转化为NSData类型 NSData * pData = [[NSData alloc]initWithContentsOfURL:pURL]; //获取网络图片 UIImage * pImage = [UIImage imageWithData:pData]; //找到当前行 LinCell * pCell = (LinCell *)[self.mTableView cellForRowAtIndexPath:path]; //设置cell里的图片 pCell.imageView.image = pImage; //设置活动标志停止 [pCell.pActivityView stopAnimating]; //移除活动标志 [pCell.pActivityView removeFromSuperview];}#pragma mark-------UITableViewDelegate//获取表视图中每一行的高度- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 60;}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning];}@end
0 0
- iOS学习笔记——网络资源下载(下载图片)
- 网络资源(图片)下载到本地
- 学习url读取网络资源,开启线程来下载图片
- iOS学习笔记-107.多线程06——CGD线程间通信下载图片
- 网络资源下载
- 网络资源下载
- 网络资源 下载
- iOS学习笔记4—iOS开发异步下载
- Servlet学习笔记---下载图片
- iOS开发—使用GCD下载图片
- iOS学习笔记——同步请求下载与异步请求下载
- 【代码笔记】iOS-HTTPQueue下载图片
- 通过URL连接下载网络资源(基本)
- java多线程下载网络资源(支持断点续传)
- 嵌入式网络资源下载地址
- Java多线程下载网络资源
- 网络资源的下载安装
- 多线程下载网络资源
- (standard c libraries translation )strchr
- SQL 数据类型
- Html5通过Web SQL Datab…
- Myeclipse启动不了的解决方法
- 产品经理的三大文档
- iOS学习笔记——网络资源下载(下载图片)
- html禁止TextArea拖动
- js中cookie的使用详细分析
- css自定义cursor(放大镜 放小镜)
- html5本地存储-WebStorage
- html5判断浏览器是否在线
- Margin与float:left同时使用…
- jquery页面加载完之后运行代码
- HTML <select> 标签的&n…