Загрузка изображения с прогрессом с использованием AlamofireImage?

Есть ли способ загрузить изображение с помощью AlamofireImage и получить обратную связь о ходе загрузки, используя возможности его расширений UIImage, фильтров изображений и кеша изображений?

Я знаю, что могу вернуться к простому Alamofire.request + responseImage, но я хотел бы не усложнять и использовать расширение UIImageView.

Благодарю вас!


person Sendoa    schedule 02.11.2015    source источник
comment
Используйте это: github.com/Alamofire/AlamofireImage   -  person Lokesh Dudhat    schedule 02.11.2015
comment
@LokeshDudhat вопрос связан с AlamofireImage. Я уже использую его, но не могу найти способ отслеживать процесс загрузки изображения…   -  person Sendoa    schedule 02.11.2015


Ответы (3)


На данный момент нет никакого способа использовать AlamofireImage вместе с расширением UIImageView для получения обновлений прогресса при загрузке изображения. Причина, по которой она не была добавлена ​​изначально, заключалась в том, что не казалось, что большинству пользователей такая функция понадобится. Я хотел бы обсудить больше, чтобы увидеть, действительно ли мы хотели бы добавить эту функцию в AlamofireImage в будущем выпуске.

Хотели бы вы открыть проблему, пройдясь по вашему варианту использования? Я просто хотел бы точно знать, как вы ожидаете, что это будет работать, и почему вам на самом деле нужны отчеты о ходе выполнения.

person cnoon    schedule 03.11.2015
comment
Большое спасибо за ваш ответ @cnoon! Я только что опубликовал проблему github.com/Alamofire/AlamofireImage/issues/48. ;-) - person Sendoa; 04.11.2015

Попробуйте это с Swift 3.0.2:

let utilityQueue = DispatchQueue.global(qos: .utility)
let url = "http://kingofwallpapers.com/code/code-006.jpg"

    Alamofire.download(url)
        .downloadProgress(queue: utilityQueue) { progress in
            print("Download Progress: \(progress.fractionCompleted)")
        }
        .responseData { response in
            print("Response is \(response)")
            if let data = response.result.value {
                let image = UIImage(data: data)
            }
    }
person Sour LeangChhean    schedule 24.03.2017

Используйте загрузочный образ Alamofire с процессом

Загрузка файла с прогрессом

Alamofire.download(.GET, "url...", destination: destination)
         .progress { bytesRead, totalBytesRead, totalBytesExpectedToRead in
             print(totalBytesRead)

             // This closure is NOT called on the main queue for performance
             // reasons. To update your ui, dispatch to the main queue.
             dispatch_async(dispatch_get_main_queue()) {
                 print("Total bytes read on main queue: \(totalBytesRead)")
             }
         }
         .response { _, _, _, error in
             if let error = error {
                 print("Failed with error: \(error)")
             } else {
                 print("Downloaded file successfully")
             }
         } 
person Lokesh Dudhat    schedule 02.11.2015
comment
Как я уже говорил в своем исходном сообщении, «Я знаю, что могу вернуться к простому Alamofire.request + responseImage, но я хотел бы не усложнять ситуацию и использовать расширение UIImageView». Это делается для того, чтобы воспользоваться кэшированием и другими полезными функциями. - person Sendoa; 02.11.2015