0

我正在尝试实现一个在 10 秒内连续完成的 UIProgressView。我正在使用 NSTimer 来尝试实现这一目标,但我很难弄清楚。我已经查阅了有关 UIProgressView 和 NSTimer 的文档,以及其他已发布的问题,如果可以,请帮助我。

我当前的实现根本不更新 UIProgress 视图。源代码摘录如下:

- (void)updateTimer:(NSTimer *)timer
{
    // sets timer
    [self setTimer:[NSTimer scheduledTimerWithTimeInterval:0.25f 
                                                  target:self 
                                                selector:@selector(updateTimer:) 
                                                userInfo:nil 
                                                repeats:YES]];
    float newProgress = [self.timeProgressView progress] + 0.025;
    [self.timeProgressView setProgress:newProgress animated:YES];
}

任何帮助表示赞赏。

4

2 回答 2

4

尝试这个

progressView.progress = 1;
    time = 1;
    timer = [NSTimer scheduledTimerWithTimeInterval: 0.1f
                                             target: self
                                           selector: @selector(updateTimer)
                                           userInfo: nil
                                            repeats: YES];

-(void) updateTimer
{
    if(time <= 0.0f)
    {
        //Invalidate timer when time reaches 0
        [timer invalidate];
    }
    else
    {
        time -= 0.01;
        progressView.progress = time;
    }
}
于 2012-05-03T14:48:25.833 回答
1

尝试设置

[self setTimer:[NSTimer scheduledTimerWithTimeInterval:0.25f 
                                                  target:self 
                                                selector:@selector(updateTimer:) 
                                                userInfo:nil 
                                                repeats:YES]];

updateTimer 之外的方法,除非它每 0.25 秒调用一次。

或者:

- (void)setupTimerWithTimer:(NSTimer *) timer{
[self setTimer:[NSTimer scheduledTimerWithTimeInterval:0.25f 
                                                      target:self 
                                                    selector:@selector(updateTimer) 
                                                    userInfo:nil 
                                                    repeats:YES]];
}

- (void)updateTimer{
   float newProgress = [self.timeProgressView progress] + 0.025;
   [self.timeProgressView setProgress:newProgress animated:YES];
}
于 2012-05-03T14:44:25.803 回答