[swift] SDWebImage를 사용하여 이미지 다운로드 진행 상황을 어떻게 추적할 수 있나요?

SDWebImage는 iOS 앱에서 이미지를 비동기적으로 다운로드하고 캐싱하는 데 사용되는 널리 알려진 라이브러리입니다. 이미지 다운로드의 진행 상황을 추적하기 위해서는 SDWebImage의 SDWebImageDownloaderDelegate 프로토콜을 구현해야 합니다.

다음과 같이 진행 상황을 추적하기 위해 SDWebImageDownloaderDelegate 프로토콜을 구현할 수 있습니다:

import UIKit
import SDWebImage

class ImageViewController: UIViewController, SDWebImageDownloaderDelegate {
    @IBOutlet weak var imageView: UIImageView!
    @IBOutlet weak var progressView: UIProgressView!
    
    var downloadTask: SDWebImageDownloadToken?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 이미지 다운로드 진행 상황을 추적하기 위해 delegate를 설정합니다.
        SDWebImageDownloader.shared.delegate = self
        
        let url = URL(string: "https://example.com/image.jpg")
        downloadTask = SDWebImageDownloader.shared.downloadImage(with: url, options: [], progress: nil) { [weak self] (image, data, error, finished) in
            if (finished && error == nil) {
                // 이미지 다운로드가 완료되었을 때 화면에 이미지를 표시합니다.
                self?.imageView.image = image
            }
        }
    }
    
    func imageDownloader(_ downloader: SDWebImageDownloader, didUpdateProgress progress: SDImageLoaderProgress) {
        // 다운로드 진행 상황을 업데이트하여 프로그레스 뷰에 표시합니다.
        progressView.progress = Float(progress.completedUnitCount) / Float(progress.totalUnitCount)
    }
}

위의 예제에서 SDWebImageDownloaderDelegateimageDownloader(_:didUpdateProgress:) 메서드를 구현하여 이미지 다운로드의 진행 상황을 업데이트하고 progressView에 표시합니다.

또한, 이미지 다운로드 중에 해당 뷰 컨트롤러가 해제되는 경우를 대비해 downloadTask를 사용하여 다운로드 작업을 취소할 수 있습니다.

이제 ImageViewController를 사용하여 이미지 다운로드 진행 상황을 추적할 수 있습니다. 이렇게하면 사용자는 이미지의 다운로드 진행 상황을 실시간으로 확인할 수 있습니다.