Develop/Swift
KingFisher에서 SVG 이미지 다운로드하는 방법
hsleedevelop
2022. 11. 13. 13:31
반응형
Feat
- 킹피셔를 이용한 이미지 다운로드 함수 작성
- URL 경로의 마지막 확장자에 SVG가 있을 경우 SVG를 다운로드 하는 함수
- SVGKit 설치 - https://github.com/SVGKit/SVGKit
- SVGProcessor 작성
import SVGKit
import Kingfisher
extension UIImageView {
func kfSetImage(with urlString: String?) {
if urlString?.hasSuffix(".svg") == true {
return self.kfSetSVGImage(with: urlString)
}
if let imageUrl = urlString.map({ App.config.WebResourceURL + $0 })?.url {
self.kf.setImage(with: imageUrl)
}
}
func kfSetSVGImage(with imageURLString: String?) {
if let imageUrl = imageURLString.map({ App.config.WebResourceURL + $0 })?.url {
self.kf.setImage(with: imageUrl, options: [.processor(SVGImgProcessor())])
}
}
}
///참고 소스 - https://github.com/onevcat/Kingfisher/issues/1225#issuecomment-692534266
struct SVGImgProcessor: ImageProcessor {
var identifier: String = "com.ent-bc.yogig.SVGImgProcessor"
func process(item: ImageProcessItem, options: KingfisherParsedOptionsInfo) -> KFCrossPlatformImage? {
switch item {
case .image(let image):
//print("already an image")
return image
case .data(let data):
let imsvg = SVGKImage(data: data)
return imsvg?.uiImage
}
}
}
//usage
imageView?.kfSetImage(with: urlString)
반응형