2013-12-11 4 views
0
[UIView animateWithDuration:10000 animations:^{ 
    [self.RecomendedBar setProgress:self.whatProgressbarShouldBe animated:NO]; 
}]; 

에 느리게 이동하게하는 방법 그것은 내가 그 시간에 나는 10,000애니메이션이 진행 표시 줄

로 설정하지만 여전히 너무 빨리 애니메이션 블록 내에서 진행 상황을 설정하는 것이 매우 명백합니다. 1 초 미만. 나는이 할 경우 사실

는 :

[self.RecomendedBar setProgress:self.whatProgressbarShouldBe animated:NO]; 
    [UIView animateWithDuration:10000 animations:^{ 

    }]; 

그것은 여전히 ​​미만 초 애니메이션도 progressview 바 외부 애니메이션 블록 생각했다.

+0

'progress' 속성은 애니메이션 가능하지 않습니다. – rmaddy

+0

UIProgressView는 대규모 네트워크 작업이나 장기 실행 계산과 같은 시간이 지남에 따라 업데이트 될 때 변수의 변경 내용을 반영하는 훌륭한 작업을 수행합니다. 그러나 UIProgressView는 시계가 아니므로 실제로 변경되지 않는 변수를 추적하는 것은 좋지 않습니다. 절대적으로 UIProgressView를 강제로 실행하여 시간 만 측정하면 David의 솔루션은 확실히 합리적입니다. –

답변

1

이렇게하려면 NSTimer를 사용하여 진행률 막대를 업데이트하는 데 사용되는 시간 간격을 생성해야합니다. 예를 들어, 15 초 길이의 진행 표시 줄을 만들려면 :

NSTimer *progressTimer = [NSTimer scheduledTimerWithTimeInterval:0.25f target:self selector:@selector(updateProgressBar) userInfo:nil repeats:YES]; 

- (void)updateProgressBar { 
    float newProgress = [self.progressBar progress] + 0.01666; // 1/60 
    [self.progressBar setProgress:newProgress animated:YES]; 
} 

헤더에 updateProgressBar 메서드를 선언하십시오. 0.25 초 타이머 간격이 15 초에 60 번 발생하기 때문에 증분은 0.016666 ... 또는 1/60입니다.