ios-异步下载网络图片

本文介绍如何在iOS应用中利用子线程从网络下载图片,并将其安全地展示在UIScrollView内的UIImageView中。文章详细展示了如何通过Objective-C实现这一功能,包括创建子线程、下载图片、转换数据为UIImage以及在主线程更新UI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们的目的是让self.view变成scrollView,然后在scrollView中放一个UIImageView,然后在UIImageView中放一个从网络上下载的图片。下载让子线程去下载,因为比较耗时,然后更新UI的话我们返回主线程去做。因为子线程是不一定能更新UI的,会有安全隐患。

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic ,strong)UIScrollView * scorllView;
@property (nonatomic, strong)UIImageView * imageView;
@end

@implementation ViewController
-(void)loadView
{   
    self.scorllView=[[UIScrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];
    self.view=self.scorllView;
    self.imageView=[[UIImageView alloc]init];
    [self.scorllView addSubview:self.imageView];
}
- (void)viewDidLoad {
    [super viewDidLoad];
    //创建一个子线程
    NSThread * thread=[[NSThread alloc]initWithTarget:self selector:@selector(downloadImage) object:nil];
    //让线程进入就绪状态
    [thread start];
}
//下载网络图片
-(void)downloadImage
{
    //根据网址创建统一资源标识符
    NSURL * url=[NSURL URLWithString:@"https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1502267808635&di=40d2848bd388e1551749d652ab3a1438&imgtype=0&src=http%3A%2F%2Fabc.2008php.com%2F2013_Website_appreciate%2F2013-07-22%2F20130722175804.jpg"];
    //下载图片
    NSData * data=[NSData dataWithContentsOfURL:url];
    //把NSData转换成UIImage
    UIImage  * image=[UIImage imageWithData:data];
    //在主线程上去更新UI控件,waitUntilDone会等待update方法执行完毕之后,才去执行后面的代码
    [self performSelectorOnMainThread:@selector(update:) withObject:image waitUntilDone:YES];
}
-(void)update:(UIImage *)image
{
    //设置图片
    self.imageView.image=image;
    //设置imageView的大小和图片一样
    [self.imageView sizeToFit];
    //设置scrollView的滚动的范围
    self.scorllView.contentSize=image.size;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值