【问题标题】:UIProgressView doesn't change when 0.0 < progress < 0.03当 0.0 < progress < 0.03 时 UIProgressView 不会改变
【发布时间】:2010-01-01 01:50:05
【问题描述】:

我有一个 UIProgressView,我用它来直观地表示一分钟计时器。它的宽度为 280 像素。我正在使用 NSTimer 逐渐减小“进度”的值,从进度 = 1.0 开始。 “进度”每十分之一秒更新一次。除了最后两秒钟,它完全按照我的意愿行事。

一旦“进度”的值低于 0.03,UIProgressView 的移动就会停止(显示大约 0.2 厘米的条形图),直到“进度”达到 0.0,此时 0.2 厘米的条形图就会消失。

有谁知道为什么 UIProgressView 会这样?这是设计使然,还是我做错了什么?

编辑:

mjdth,

我不认为它与舍入有关,因为在 NSTimer 调用的方法中,我使用 NSLog 来显示“进度”的值,并且打印出六个有效数字,例如

2009-12-31 21:13:22.462 XXXXXXX 0.101669
2009-12-31 21:13:22.562 XXXXXXX 0.100003

此外,如果是这样的话,所有的动作都会很不稳定,而不仅仅是最后两秒。下面是 NSTimer 调用的代码:

- (void) updateProgressBar {
    timerProgressBar.progress = [playEndTime timeIntervalSinceNow] / 60.0;
    NSLog(@"%f", timerProgressBar.progress);
}

【问题讨论】:

  • 嗨贾斯汀,我在计时器栏上遇到了同样的问题。你找到解决办法了吗?

标签: iphone cocoa-touch nstimer uiprogressview


【解决方案1】:

我相信这是设计使然,因为进度条的圆形端盖无法部分绘制。低于某个阈值但高于 0 时,仅绘制两个端盖,只有当它超过某个级别时,图像的中间部分才会被绘制和扩展。

如果您在正常的前进方向上使用进度条,它会起作用吗?它可以正常绘制最后几秒钟,因为它在另一端没有那个限制。

【讨论】:

    【解决方案2】:

    这与你的进度量的四舍五入或计算有什么关系吗?你能展示一下代码,以便我们看一下。可能只是进度变量本身被计算为 0.3。

    您是否在运行时检查以确保您的进度变量更新为 0.2 或 0.1 等?

    【讨论】:

      【解决方案3】:

      如果您(和 Apple)不介意颠倒颜色,您可以水平翻转视图并将其开始为空,然后逐渐填满。它将有同样的问题,但在开始而不是结束。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-27
        • 2022-06-14
        • 1970-01-01
        • 1970-01-01
        • 2016-09-14
        相关资源
        最近更新 更多