2016-12-27 8 views
0

카운트 다운 타이머를 나타내고 싶습니다. 진행률보기는 <의 색이 70 % - 노란색, < 50 % -로 변경되어야합니다. 그러나 UIProgressView은 ProgressTintColor를 변경 한 후에 업데이트되지 않습니다 (0 < x < 0.5).ProgressTintColor 변경 후 UIProgressView가 <= 0.5 값을 업데이트하지 않습니다.

하지만

[self.progressView setProgressTintColor: [UIColor redColor]]; //this line. 

아래의 코드는 각 초 트리거 언급 할 때 잘 작동 :

float value = (float)secondsLeft/(float)secTotalDuration; 
if (value < 0.9) { 
     if (isChange == NO) { 
      //[self.progressView setTranslatesAutoresizingMaskIntoConstraints: NO]; //- I tried THIS. 

      [self.progressView setProgressTintColor: [UIColor redColor]]; //LINE - #1 
      [self.progressView setTrackTintColor: [UIColor clearColor]]; 

      isChange = YES; 
     } 

     dispatch_async(dispatch_get_main_queue(), ^{ //With or without mainqueue doen't affect Uiprogressview change while commenting LINE - #1 
       [self.progressView setProgress:value animated:NO]; 
     }); 

     NSLog(@"Progress: %f", [self.progressView progress]); 

을 그리고 LOG :

Progress: 1.000000 
Progress: 0.800000 
Progress: 0.700000 
Progress: 0.500000 //Doesn't updated after this. 
Progress: 0.300000 
Progress: 0.200000 
+0

장소 모든 UI 업데이트 관련 코드를 호출합니다. – byJeevan

+0

나는 그것을 시도했다, 지반. 그러나 같은 결과. –

+0

정확히 달성하기를 원하는 점을 말씀해 주시겠습니까? – byJeevan

답변

0

이 시도하십시오

-(void) updateProgress:(NSNumber *) value { 

     //Progress Value   
     [self.progressView setProgress:value animated:NO]; 

     //Progress Color   
     if (value < 0.5) { 

      [self.progressView setProgressTintColor: [UIColor redColor]]; 
      [self.progressView setTrackTintColor: [UIColor clearColor]]; 
     } 
     else if (value < 0.7) { 

      [self.progressView setProgressTintColor: [UIColor yellowColor]]; 
      [self.progressView setTrackTintColor: [UIColor clearColor]]; 
     } 
     else if (value < 1.0) {  

      [self.progressView setProgressTintColor: [UIColor greenColor]]; 
      [self.progressView setTrackTintColor: [UIColor clearColor]]; 

     } 
} 

그런 다음()`블록 dispatch_get_main_queue`아래는

float value = (float)secondsLeft/(float)secTotalDuration; 

[self performSelectorOnMainThread:@selector(updateProgress:) withObject:@(value) waitUntilDone:NO]; 
+0

답변 해 주셔서 감사합니다. 그러나 이것은 내 문제를 해결하지 않습니다. 0.5 이후에도 변하지 않았습니다. –