[swift] SDWebImage를 사용하여 이미지 다운로드 중에 이미지에 일부 영역을 선택하고 이를 동그랗게 자르는 방법은 무엇인가요?
import SDWebImage
import UIKit
extension UIImageView {
func setImage(with url: URL, cropToCircle: Bool) {
self.sd_setImage(with: url) { [weak self] (image, _, _, _) in
guard let image = image else { return }
if cropToCircle {
self?.image = self?.cropImageToCircle(image: image)
}
}
}
private func cropImageToCircle(image: UIImage) -> UIImage {
let renderer = UIGraphicsImageRenderer(size: self.bounds.size)
let roundedImage = renderer.image { context in
let bezierPath = UIBezierPath(ovalIn: self.bounds)
bezierPath.addClip()
image.draw(in: self.bounds)
}
return roundedImage
}
}
위의 예제 코드는 UIImageView의 확장(extension)으로 작성되었습니다. setImage(with cropToCircle:)
함수를 사용하여 SDWebImage를 통해 이미지를 다운로드하고, cropToCircle
매개 변수를 사용하여 이미지를 원형으로 자릅니다.
이미지가 다운로드 된 후에 cropImageToCircle(image:)
함수를 사용하여 이미지를 동그랗게 자릅니다. 이 함수는 UIGraphicsImageRenderer
를 사용하여 원형 이미지를 렌더링합니다.
위의 예제 코드를 사용하여 SDWebImage를 통해 이미지를 다운로드하고 원형으로 자를 수 있습니다.
참고 문서:
- SDWebImage GitHub
- Apple Developer Documentation - UIBezierPath
- Apple Developer Documentation - UIGraphicsImageRenderer