2016-07-05 2 views
0

Я делаю процесс анализа на изображении. Когда я просматриваю все пиксели, я хочу получить отзывы о прогрессе. Вот мой код:UIProgressView только значения обновления Вместо UI

 for _ in 0 ..< height { 
      for _ in 0 ..< width { 
       analyzeImage(currentPixel) 
       currentPixel = currentPixel.successor() 
      } 
      updateProgress() 
     } 

func updateProgress() { 
    self.fractionalProgress += self.fractionalRatio 
    if (Int(self.fractionalProgress/self.fractionalRatio) % 20) == 0 { 
     self.progressBar.progress = self.fractionalProgress 
     print(self.progressBar.progress) 
    } 
} 

Я вызвал updateProgress внутри вложенного цикла цикла. Печатный результат обновляется, но панель не изменяется визуально. Он обновляется только в конце. Спасибо за любую помощь в продвинутом !!!!

ответ

0

UIKit однопоточный и предназначен только для основного потока. Если у вас есть цикл, выполняющий работу над основным потоком, UIKit не будет обновляться до тех пор, пока ваш код не закончит работу и ваш метод не вернется.

Чтобы показать прогресс, вам необходимо выполнить работу над фоновым потоком и обновить UIKit в основном потоке. Прочитано Concurrency Programming Guide.

 Смежные вопросы

  • Нет связанных вопросов^_^