最近專案中需要用到網路圖片載入,在網上找了很多圖片載入的文章,不過感覺都不怎麼方便。後來找到AlamofireImage這個庫,使用起來非常簡單,readme也非常清晰,記錄一下使用過程,希望幫到需要的人,本文程式碼使用的是AlamofireImage 3.3版本。
優點
- 使用簡單,兩行程式碼載入網路圖片
- 自動快取,載入過的圖片,在沒網路的時候仍然可以顯示。
- 有一些常用的擴充套件,方便對圖片進行操作。
匯入
//使用cocoapods匯入
pod `AlamofireImage`, `~> 3.3`
使用
真的非常簡單,兩行程式碼搞定(記得要 import AlamofireImage)
let imageView = UIImageView(frame: frame)
let url = URL(string: "https://httpbin.org/image/png")!
imageView.af_setImage(withURL: url)
設定預設圖片:
let imageView = UIImageView(frame: frame)
let url = URL(string: "https://httpbin.org/image/png")!
let placeholderImage = UIImage(named: "placeholder")!
imageView.af_setImage(withURL: url, placeholderImage: placeholderImage)
對圖片進行縮放:
let image = UIImage(named: "unicorn")!
let size = CGSize(width: 100.0, height: 100.0)
let scaledImage = image.af_imageScaled(to: size)
let aspectScaledToFitImage = image.af_imageAspectScaled(toFit: size)
let aspectScaledToFillImage = image.af_imageAspectScaled(toFill: size)
圓形圖片:
let image = UIImage(named: "unicorn")!
let radius: CGFloat = 20.0
let roundedImage = image.af_imageRounded(withCornerRadius: radius)
let circularImage = image.af_imageRoundedIntoCircle()
擴充套件
雖然使用AlamofireImage載入圖片已經非常簡單,不過每次需要載入網路圖片都需要導包,並且圖片要求傳URL,所以我們可以做一些簡單的擴充套件。
import AlamofireImage
extension UIImageView{
func setImageUrl(_ string : String?) {
if(string != nil){
let url = URL(string: string!)!
self.af_setImage(withURL: url)
}
}
}
//使用
userImgImage.setImageUrl("https://httpbin.org/image/png")
注意
在AlamofireImage的readme中,提到一下用法,其中responseImage已經被廢棄,可能無法使用。在原始碼中可以看到@discardableResult
標記
Alamofire.request("https://httpbin.org/image/png").responseImage { response in
debugPrint(response)
print(response.request)
print(response.response)
debugPrint(response.result)
if let image = response.result.value {
print("image downloaded: (image)")
}
}