ProgressView는 작업의 진행 상태를 시각적으로 나타내기 위해 사용되는 UI 요소입니다.
주로 작업의 진행 상태를 표시하거나 다운로드, 업로드, 파일 복사 등과 같은 장기 실행되는 작업의 진행 상황을 사용자에게 시각적으로 표시하는 데 사용됩니다.
아래의 코드를 통해 이미지를 받아오는 동안 ProgressView를 업데이트하는 방법에 대해 알아보겠습니다.
private lazy var progressView: UIProgressView = {
let view = UIProgressView()
view.trackTintColor = .lightGray
view.progressTintColor = .systemBlue
view.progress = 0
view.snp.makeConstraints {
$0.height.equalTo(10)
}
return view
func donwnLoadImage(imageUrl: ImageURL) async -> Data {
let dataTask = AF.request(imageUrl.url, method: .get)
.downloadProgress(closure: { progress in
self.progressView.progress = Float(progress.fractionCompleted)
})
.serializingData()
switch await dataTask.result {
case .success(let data):
return data
case .failure(let error):
print(error.localizedDescription)
}
return Data()
}
Alamofire의 downloadProgress
을 사용하면 파일 다운로드나 업로드와 같은 HTTP 작업의 진행률을 모니터링하고 표시할 수 있습니다.
따라서 downloadProgress을 사용해서 HTTP 다운로드 요청의 진행률이 업데이트될 때마다 progressView의 진행률을 업데이트합니다.
이렇게 하면 사용자에게 작업의 진행 상태를 시각적으로 표시할 수 있으며, 다운로드가 얼마나 완료되었는지를 실시간으로 확인할 수 있습니다.