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 相关技术文章
  • 相关阅读:
    每天干的啥?(2017.7)
    每天干的啥?(2017.6)
    每天干的啥?(2017.5)
    每天干的啥?(2017.4)
    C# WinForm中如何让当前应用程序只允许启动一个实例
    C# WinForm 关闭登陆窗体后进程还再内存怎么办?
    ASP.NET在MVC控制器中获取Form表单值的方法
    C#封装CRUD到SqlHelper类解读
    windows 10微软账户不能访问局域网共享,但是本地账户可以访问
    C#高级参数params的使用
  • 原文地址:https://www.cnblogs.com/ITCoderW/p/6185072.html
Copyright © 2011-2022 走看看