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

上這是很明顯,我的動畫塊,其時我設置爲10K如何使動畫中移動較慢的進度條

然而,它仍然是如此之快中設置進度。少於1秒。

事實上,如果我這樣做:

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

    }]; 

但這仍然低於1秒動畫甚至認爲progressview酒吧外面動畫塊。

+0

「進度」屬性不具動畫性。 – 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.016666 ...或1/60,因爲0.25秒的定時器間隔將在15秒內發生60次。