你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS UI多線程 NSThread 下載並顯示圖片到UIImageView

IOS UI多線程 NSThread 下載並顯示圖片到UIImageView

編輯:IOS開發綜合

效果圖

\

@property (weak,nonatomic)IBOutletUILabel *downLabelInfo;

@property (weak,nonatomic)IBOutletUIImageView *imageView;

@end

@implementationViewController

- (void)viewDidLoad

{

[super viewDidLoad];

NSString *url = @"http://d.hiphotos.baidu.com/image/w%3D1366%3Bcrop%3D0%2C0%2C1366%2C768/sign=6cbcab9dabec8a13141a53e3c135aaec/aa64034f78f0f7369453c3730855b319ebc41316.jpg";

@autoreleasepool {

NSThread *thread = [[NSThreadalloc]initWithTarget:selfselector:@selector(downloadImage:)object:url];

[thread start];

}

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

-(void) downloadImage:(NSString *)url {

// 要把顯示的內容放到同步方法前面即可

self->_downLabelInfo.text =@"正在下載圖片中...";

// 同步方法 會卡線程直到完成位置

NSData *imageData = [NSDatadataWithContentsOfURL:[NSURLURLWithString:url]];

UIImage *image =[UIImageimageWithData:imageData];

if(image==nil)

{

}

else

{

//self->_downLabelInfo.text = @"正在下載圖片中...";所以這條語句寫了也沒用

[self performSelectorOnMainThread:@selector(updateImageView:)withObject:(image)waitUntilDone:YES];

}

}

-(void) updateImageView:(UIImage *)image

{

self->_imageView.image = image;

self->_imageView.frame=CGRectMake(self.view.frame.size.width/2-100,self.view.frame.size.height/2-100,200, 200);

self->_downLabelInfo.textColor = [UIColorredColor];

self->_downLabelInfo.text =@"圖片下載完成";

}

@end

第二種方式使用 NSURLConnection sendSynchronousRequest 異步方式獲取圖片內容並顯示

將downloadImage方法修改如下

-(void) downloadImage:(NSString *)url

{

self->_downLabelInfo.text =@"正在下載圖片中...";

NSURLRequest *request = [NSURLRequestrequestWithURL:[NSURLURLWithString:url]];

NSError *error;

NSData *data = [NSURLConnectionsendSynchronousRequest:request returningResponse:nil error:&error];

if(data ==nil)

{

NSLog(@"nil");

}

else

{

UIImage *image =[UIImageimageWithData:data];

self->_imageView.image = image;

self->_downLabelInfo.textColor = [UIColorredColor];

self->_downLabelInfo.text =@"圖片下載完成";

}

}

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved