반응형
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)
반응형
'Develop > Swift' 카테고리의 다른 글
M1 ARM-64 Simulator 지원하지 않는 프레임워크 수정하는 방법 (0) | 2023.01.07 |
---|---|
String에 HTML 링크 적용 (0) | 2023.01.07 |
SwiftUI 상에서 HTML 출력과 Link, CSS 적용하는 방법 (0) | 2022.11.13 |
multi-line 문구 localizable.strings 적용 방법 (0) | 2022.10.13 |
UserDefaults 모든 항목 출력, 경로, 리셋 (0) | 2022.09.06 |