iOS開發——從網路請求照片的兩種方法
在軟體開發中,從網路獲取照片是必不可少的。下面兩種方法都可以從網路獲取照片:
(首先說明一下,由於iOS9中新增App Transport Security(簡稱ATS)特性,簡單說就是原來請求用的HTTP要換成HTTPS,目的是更安全。但是我們請求的時候很可能用到http,直接請求http的話,控制檯會列印一條訊息:
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
意思大概就是http不能用啦。
那我們就把它ATS這個新要求停掉:在Xcode的info.plist檔案中新增一條Dictionary型別的App Transport Security,再給它新增一個布林型的子節點Allow Aritrary Loads,並將這個子節點布林值設為 YES,就可以了)
下面正式介紹方法:
一:首選的當然是Xcode自帶,程式碼超簡單:
//首先得拿到照片的路徑,也就是下邊的string引數,轉換為NSData型。
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:string]];
//然後就是新增照片語句,這次不是`imageWithName`了,是 imageWithData。
UIImageView.image = [UIImage imageWithData:data];
```
是不是超級簡單?但是具體使用了幾次發現系統這種方法在照片多的時候特別的卡,因為它每次都要請求照片,建議使用第二種,看下面。
二:用第三方庫請求。
原始碼在GitHub上,網址https://github.com/rs/SDWebImage
,下載下來後把其中的SDWebImage資料夾中.h和.m標頭檔案匯入你的工程,比較多,不過全匯入功能應該會比較完善。然後在你需要使用照片的類標頭檔案中匯入import "UIImageView+WebCache.h
和一份協議SDWebImageManagerDelegate
。OK,匯入完成,現在開始使用:
```
//生成圖片連結
NSURL *picURL = [NSURL URLWithString:string];
//從網路獲取照片,如果沒有就用系統自帶佔位照片
[UIImageView sd_setImageWithURL:picURL];
//下面這個方法多了個引數 placeholderImage,意思是如果沒有從網路請求到資料,用使用我們預先設定的這張照片。
[UIImageView sd_setImageWithURL:picURL placeholderImage:[UIImage imageNamed:@"picholder.png"]];
```
上面說了系統的方法雖然程式碼簡單,理解起來較容易,但它內部走的方法其實不少,最最主要的問題是用起來特別的卡,建議大家使用第三方類,這個第三方類每次載入前都會先從本地查詢有沒有快取的照片,有的話直接呼叫,沒有的話才會去請求,總體來看就是省資源,載入速度快。個人比較推薦。
相關文章
- iOS原生網路請求iOS
- iOS開發 GET、POST請求方法:NSURLSession篇iOSSession
- iOS 使用Moya網路請求iOS
- iOS網路請求穿值iOS
- java解決請求跨域的兩種方法Java跨域
- axios(xhr) 和 fetch 兩種請求方式iOS
- iOS開發 GET、POST請求方法:NSURLConnection篇iOS
- GET和POST兩種基本請求方法的區別
- Android小知識-剖析Retrofit中網路請求的兩種方式Android
- Flutter開發系列教程之網路請求Flutter
- 安卓開發之網路請求HttpURLConnection安卓HTTP
- iOS開發·網路請求大總結(NSURLConnection,NSURLSession,AFNetworking)iOSSession
- iOS9 中關閉ATS的方法(網路請求失敗)iOS
- iOS開發那些事-iOS網路程式設計同步GET方法請求程式設計iOS程式設計
- 十. Axios網路請求封裝iOS封裝
- IOS網路請求報錯返回碼iOS
- iOS 網路請求資料快取iOS快取
- iOS開發之tableView左滑刪除的兩種方法iOSView
- swift網路資料請求方法Swift
- iOS for 迴圈內網路請求的處理iOS內網
- iOS 多網路請求的執行緒安全iOS執行緒
- iOS開發那些事-iOS網路程式設計非同步GET方法請求程式設計iOS程式設計非同步
- flutter之從零開始搭建(三)之 網路請求Flutter
- iOS開發 支援https請求以及https請求的抓包iOSHTTP
- vue(24)網路請求模組axios使用VueiOS
- iOS 網路請求之multipart/form-dataiOSORM
- 網路請求發展介紹
- axios傳送兩次請求原因及解決方法iOS
- 七種HTTP請求方法HTTP
- Flutter 網路請求的三種簡單實現Flutter
- Android網路請求(終) 網路請求框架RetrofitAndroid框架
- Android網路請求(3) 網路請求框架OkHttpAndroid框架HTTP
- retrofit網路請求框架的地址及方法地址框架
- 教你兩種新增網路印表機的方法
- 網路請求-手把手實現axiosiOS
- Axios 原始碼解讀 —— 網路請求篇iOS原始碼
- iOS--React Native網路請求外掛iOSReact Native
- Android網路請求(4) 網路請求框架VolleyAndroid框架