zoukankan      html  css  js  c++  java
  • 异步下载网络图片

    • 需求:异步下载网络图片
    • 思想:
      • 在子线程下载网络图片
        • 下载图片的话拿到图片的url
        • 由url拿到对应的二进制数据(网络中的数据传输通过二进制数据)
        • 由二进制数据得到图片
      • 回到主线程刷新界面
        • 设置scrollView和imageView的大小等UI问题
     1 #import "DownloadImageViewController.h"
     2 
     3 @interface DownloadImageViewController ()
     4 /**
     5  滚动视图
     6  */
     7 @property (nonatomic,strong) UIScrollView *scrollView;
     8 
     9 /**
    10  图片视图
    11  */
    12 @property (nonatomic,strong) UIImageView *imageView;
    13 @end
    14 
    15 @implementation DownloadImageViewController
    16 
    17 - (void)viewDidLoad {
    18     [super viewDidLoad];
    19     
    20     [self performSelectorInBackground:@selector(downloadImage) withObject:nil];
    21     
    22 }
    23 
    24 #pragma mark - 这个方法先于viewDidLoad调用 当view为nil的时候会调用这个方法
    25 - (void)loadView{
    26     //创建滚动视图
    27     self.scrollView = [[UIScrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];
    28     self.scrollView.bounces = NO;
    29     self.scrollView.backgroundColor = [UIColor cyanColor];
    30     //将滚动视图设置为根视图
    31     self.view = self.scrollView;
    32 
    33     //创建图片视图
    34     self.imageView = [[UIImageView alloc]init];
    35     [self.view addSubview:self.imageView];
    36 
    37 }
    38 
    39 /**********异步下载网络图片****************/
    40 - (void)downloadImage{
    41     //拿到地址的url
    42     NSURL *url = [NSURL URLWithString:@"http://img.daimg.com/uploads/allimg/161005/1-161005114001.jpg"];
    43     //网络数据是以二进制的形式传送的
    44     NSData *data = [NSData dataWithContentsOfURL:url];
    45     UIImage *image = [UIImage imageWithData:data];
    46     
    47     //回到主线程刷新UI
    48     [self performSelectorOnMainThread:@selector(updateUIWithImage:) withObject:image waitUntilDone:NO];
    49 
    50 
    51 }
    52 
    53 - (void)updateUIWithImage:(UIImage *)image{
    54     
    55     NSLog(@"updateUIWithImage");
    56     //设置图片视图
    57     self.imageView.image = image;
    58     //设置图片视图的大小和图片一样大
    59     [self.imageView sizeToFit];
    60     //设置滚动的视图的滚动范围和图片一样大
    61     self.scrollView.contentSize = image.size;
    62     
    63     
    64 }
    我会不定期分享 iOS 相关技术文章
  • 相关阅读:
    C#秘密武器之表达式树
    C#秘密武器之特性
    [转]拷贝构造函数详解
    [转]STL 容器一些底层机制
    C++ Qt多线程 TcpSocket服务器实例
    QByteArray储存二进制数据(包括结构体,自定义QT对象)
    [转]浅谈 C++ 中的 new/delete 和 new[]/delete[]
    [转]QList内存释放
    Subscribe的第四个参数用法
    ROS多线程订阅消息
  • 原文地址:https://www.cnblogs.com/ITCoderW/p/6185072.html
Copyright © 2011-2022 走看看