ios - 7秒的简单NSTimer进度条

标签 ios nstimer progress

理论上这个进度条应该持续 7 秒,但它看起来有点长。我的数学一定是不正确的,或者我忽略了一些东西。

计时器应在 1 秒内触发 100 次,进度条应比达到 1.0 的时间长 7 倍左右

如有任何帮助,我们将不胜感激。

- (void)startTimer;
{
    [pBar showProgress:self.progress];

    [self.timer invalidate];
    self.timer = nil;

    if (self.progress < 1.0) {
        CGFloat step = 0.01;
        self.timer = [NSTimer scheduledTimerWithTimeInterval:step target:self
                                                selector:@selector(startTimer)
                                                userInfo:nil repeats:NO];
        self.progress = self.progress + 0.00143;
    } else {
        [self performSelector:@selector(stopProgress)
               withObject:nil afterDelay:0.5];
    }
}

最佳答案

你不应该像现在这样经常更新。每秒 100 次太频繁了。理论上,60 足以实现良好的帧速率。但是 UIProgressBar 可以用动画更新它的值。因此,您只需要总共更新 70 次或每秒 10 次,并通过动画进行更改。

我会选择 10 个或更少的动画更新。或者您可以尝试使用一个动画进行更新:

[UIView animateWithDuration:7.0 animations:^{
    [progressView setProgress:1.0 animated:YES]; //maybe try animated: NO here
} completion:^(BOOL finished) {
    //ended
}];

虽然我没有测试这种方法,但它似乎比手动执行本质上是进度的定时动画要干净得多。

关于ios - 7秒的简单NSTimer进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20489704/

相关文章:

ios - 无法使用日期选择器在 tableview 单元格内更新带有新日期的标签

ios - "Auto Layout still required..."返回主视图 Controller 时崩溃

python - Tkinter 进度条挂起程序并且不继续

javascript - 如何从 Fetch API 获取进度?

c# - 从 C# 中查找 SQL Server 的恢复进度

ios - 缩放/动画UIView的一侧变小? -CGAffineTransformMakeScale

ios - 关闭 UISearchController 时 UINavigationBar 覆盖 UITableView

ios - NSTimer 不重复

Swift Timer - 如何阻止 UIButton 文本重置?

ios - ios中使用NSTimer启动NSThread