我有一个UIProgressView,我用它来直观地表示一分钟的计时器。它的宽度是280像素。我正在使用NSTimer逐渐减少'progress'的值,从progress = 1.0开始。 “进步”每十分之一秒更新一次。对于除了最后两秒之外的所有时间,它完全符合我的要求。
一旦'progress'的值低于0.03,UIProgressView的移动就会停止(显示约.2cm的条形),直到'progress'达到0.0,此时.2cm的条消失。
有谁知道为什么UIProgressView的表现如此?这是设计,还是我做错了什么?
编辑:
mjdth,
我不认为它与舍入有关,因为在NSTimer调用的方法中,我使用NSLog来显示'progress'的值,并且它以六位有效数字打印,例如
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);
}
答案 0 :(得分:2)
我认为这是设计原因,因为进度条的圆形端盖无法部分绘制。低于某个阈值,但高于零,只绘制两个端盖,并且只有当它达到一定水平以上时才会绘制和扩展图像的中间部分。
如果您在正常的前进方向上使用进度条,它会起作用吗?它可以正常绘制最后几秒,因为它在另一端没有这个限制。
答案 1 :(得分:0)
是否与舍入或计算进度金额有关?你能否展示一下代码,以便我们可以看一下。可能只是将进度变量本身计算为0.3。
您是否在运行时检查过以确保您的进度变量更新为0.2或0.1等?
答案 2 :(得分:0)
如果您(和Apple)不介意颜色被反转,您可以水平翻转视图并将其空白并逐渐填满。它会有同样的问题,但在开始时而不是结束。