2016-07-05 11 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) 
    } 
} 

중첩 된 for 루프 내에서 updateProgress를 호출했습니다. 인쇄 결과가 업데이트 중이지만 시각적으로 바는 변경되지 않습니다. 끝 부분 만 업데이트됩니다. 어떤 도움을 주셔서 감사합니다 !!!!

답변

0

UIKit은 단일 스레드이며 기본 스레드에서만 실행됩니다. 주 스레드에서 작업을 수행하는 루프가있는 경우 코드 실행이 완료되고 메서드가 반환 될 때까지 UIKit은 업데이트되지 않습니다.

진행률을 표시하려면 백그라운드 스레드에서 작업을 수행하고 주 스레드에서 UIKit을 업데이트해야합니다. Concurrency Programming Guide을 읽으십시오.