1. 程式人生 > >iOS UIImageView顯示網路圖片的基礎用法

iOS UIImageView顯示網路圖片的基礎用法

先解釋下以下程式碼中的變數:

picsURL是一個儲存URL地址的陣列

choice是選擇圖片的索引數

self.imageView是View中的UIImageView

其實顯示一幅網路上的圖片十分簡單,如下2行程式碼即可。

UIImage *image=[UIImage imageWithData:[NSDatadataWithContentsOfURL:[NSURLURLWithString:[picsURL objectAtIndex:choice]]]];

[self.imageView setImage:image];

但是這種方法是同步獲取的,如果圖片十分大的話,介面就會卡死了,所以一般採取非同步方式來獲取,如下:

_data是一個NSMutableData

- (void)connection:(NSURLConnection*)connection didReceiveResponse:(NSURLResponse*)response{ //可以在顯示圖片前先用本地的一個loading.gif來佔位。 UIImage *img = [[UIImage alloc] initWithContentsOfFile:@"loading.gif"]; [self.imageView setImage:img]; _data = [[NSMutableDataalloc] init]; //儲存接收到的響應物件,以便響應完畢後的狀態。
_response = response; } - (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data { //_data為NSMutableData型別的私有屬性,用於儲存從網路上接收到的資料。 //也可以從此委託中獲取到圖片載入的進度。 [_data appendData:data]; NSLog(@"%lld%%", data.length/_response.expectedContentLength * 100); } - (void)connection:(NSURLConnection
*)connection didFailWithError:(NSError*)error{ //請求異常,在此可以進行出錯後的操作,如給UIImageView設定一張預設的圖片等。 } - (void)connectionDidFinishLoading:(NSURLConnection*)connection{ //載入成功,在此的載入成功並不代表圖片載入成功,需要判斷HTTP返回狀態。 NSHTTPURLResponse*response=(NSHTTPURLResponse*)_response; if(response.statusCode == 200){ //請求成功 UIImage *img=[UIImage imageWithData:_data]; [self.imageView setImage:img]; } }

這樣就可以非同步來載入圖片了,提升了使用者體驗。