【问题标题】:Implementing a countdown with a UIProgressView and NSTimer使用 UIProgressView 和 NSTimer 实现倒计时
【发布时间】:2012-05-03 14:40:48
【问题描述】:

我正在尝试实现一个在 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];
}

感谢任何帮助。

【问题讨论】:

  • 您的 UIProgressView 是连接到 IBOutlet 还是作为子视图添加到某处?

标签: iphone objective-c ios5 nstimer uiprogressview


【解决方案1】:

试试这个

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;
    }
}

【讨论】:

  • 埃尔帕,感谢您的回复!刚刚尝试过这个,了解time 变量,“二进制表达式的无效操作数”,因为它认为time 是时间对象而不是浮点数,但我不知道如何在中使用time updateTimer 如果我在函数之外声明它。如果我遗漏了一些明显的东西,我们深表歉意,再次感谢您的帮助。
  • 时间是否声明为浮点数?您最初应该将其设置为 1.0f。
  • 谢谢。这几天我一直在搞这些简单的事情。这种方法非常简单易懂。 :)
  • 只有一个问题。我想在计时器达到其结束的 %25 时播放一些声音。我应该如何设置这个?我似乎设置了错误的时间。
【解决方案2】:

尝试设置

[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];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多