Рассчитать прогресс загрузки MBProgressHUD

Я пытаюсь рассчитать ход загрузки, поэтому полоса начинает двигаться до тех пор, пока изображение не будет полностью загружено, а затем исчезает, но оно продолжает отображаться, даже не перемещая индикатор прогресса. Я использую прогресс SDWebimage, чтобы получить значение прогресса.

let url = NSURL(string: (array[indexPath.row][0] as? String)!)
cell.imageView.sd_setImageWithURL(url, placeholderImage: nil, options: nil, progress: { (value1, value2) -> Void in

    dispatch_async(dispatch_get_main_queue(), {

    self.HUD = MBProgressHUD(view: self.mycollectionView)
    self.view.addSubview(self.HUD)

    self.HUD.mode = MBProgressHUDMode.AnnularDeterminate
    self.HUD.delegate = self
    self.HUD.show(true)
    var x : Float = Float(value1)
    self.HUD.progress = x
        var progress : Float = 0
        while (progress < x){
            progress += 0.1
            self.HUD.progress = progress
        }

      })

    }, completed: block)

Также я получаю следующую ошибку:

<Error>: void CGPathAddArc(CGMutablePathRef, const CGAffineTransform *, CGFloat, CGFloat, CGFloat, CGFloat, CGFloat, bool): invalid value for start or end angle.

Значения появляются, когда делается прогресс:

progress:32477.0

person AaoIi    schedule 21.08.2015    source источник
comment
мог бы быть только я, но вы устанавливаете прогресс на x (которое равно value1) в self.HUD.progress = x с самого начала... поэтому, естественно, он начнется со значения, которое вы определяете, а затем вы пытаетесь установить его на var progress после этого   -  person soulshined    schedule 21.08.2015
comment
@soulshined, есть предложения?   -  person AaoIi    schedule 21.08.2015


Ответы (1)


Я могу получить ожидаемый результат, используя следующий код:

var HUD = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
HUD.mode = MBProgressHUDModeAnnularDeterminate

let url = NSURL(string: "urlString")
imageView.sd_setImageWithPreviousCachedImageWithURL(url, andPlaceholderImage: nil, options: nil, progress: { (value1, value2) -> Void in
       var progress = Float(value1)/Float(value2)
       HUD.progress = progress
}, completed: nil)

Надеюсь, это даст вам начало.

person Ameet Dhas    schedule 21.08.2015
comment
я попробую это через немного! :) - person AaoIi; 21.08.2015
comment
Это должно было быть моим предложением @AaoIi, вы устанавливали для своего прогресса значение 1, которое, исходя из вашего примера, было общей длиной. - person soulshined; 21.08.2015