下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。
内存溢出小编现在分享给大家,也给大家做个参考。
在iOS中可以这样获取一张网络图片NSURL *url = [NSURL URLWithString:@"http://f.hiphotos.baIDu.com/image/w%3D2048/sign=91c1063e1f950a7b753549c43ee963d9/f31fbe096b63f624b6a9640b8544ebf81b4ca3c6.jpg"]; NSData *data = [[NSData alloc] initWithContentsOfURL:url]; UIImage *img = [UIImage imageWithData:data];
但是图片比较大的时候程序会卡在这里,所以我们要用异步请求来下载图片
@interface VIEwController : UIVIEwController <NSURLConnectionDataDelegate> { NSMutableData* _imageData;//如果图片比较大的话,response会分几次返回相应数据,所以需要用NSMutableData来接受数据 float _length; } @end
3.VIEwController.m文件:
- (voID)vIEwDIDLoad { [super vIEwDIDLoad]; //初始化图片数据 _imageData = [[NSMutableData alloc] init]; //请求 NSURL *url = [NSURL URLWithString:@"http://f.hiphotos.baIDu.com/image/w%3D2048/sign=91c1063e1f950a7b753549c43ee963d9/f31fbe096b63f624b6a9640b8544ebf81b4ca3c6.jpg"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; //连接 [NSURLConnection connectionWithRequest:request delegate:self]; }
4.接受响应头和响应体
//响应头 - (voID)connection:(NSURLConnection *)connection dIDReceiveResponse:(NSURLResponse *)response { //清空图片数据 [_imageData setLength:0]; //强制转换 NShttpURLResponse *resp = (NShttpURLResponse *)response; _length = [[resp.allheaderFIElds objectForKey:@"Content-Length"] floatValue]; //设置状态栏接收数据状态 [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; } //响应体 - (voID)connection:(NSURLConnection *)connection dIDReceiveData:(NSData *)data { [_imageData appendData:data];//拼接响应数据 }
5.请求完成之后将图片显示出来,并且设置状态栏
- (voID)connectionDIDFinishLoading:(NSURLConnection *)connection { UIImage* image = [UIImage imageWithData:_imageData]; self.vIEw.backgroundcolor = [UIcolor colorWithPatternImage:image]; //设置状态栏 [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; }
以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
总结以上是内存溢出为你收集整理的iOS异步请求下载图片全部内容,希望文章能够帮你解决iOS异步请求下载图片所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)