7

我正在运行一个每秒更新的进度条。它需要运行 300 秒以上,因此进度条的“进度”变量的变化幅度约为每秒 0.003。

不过,我注意到“进度”变量值较低的问题。基本上,0.09 和低于该值的任何值之间似乎没有任何区别。所以最终发生的是当进度条在 0.0 - 0.09 范围内时,即使进度变量正在变化,它也不会显示任何视觉变化。另一个副作用是,如果我从 0.0 开始进度条,它会立即跳转到图像 0.09 左右(并一直保持在那里,直到真正的进度超过那个),这看起来有点奇怪。

可能值得一提的是,这在进度条的其他任何地方似乎都不是问题。它能够在其他任何地方一次移动 0.003 个进度条,包括非常接近 1.0。

我想这不是什么大不了的事,但我想知道是否有人知道解决这个问题的方法。

提前致谢。

4

3 回答 3

1

我知道这篇文章基本上已经死了,但我想出了一种不涉及多个UIProgressViews 的方法来处理它。

我决定干脆完全忘记UIProgressView并写一个假的来UISlider代替。我删除了旋钮[setThumbImage:[UIImage new] forState:UIControlStateNormal]并禁用了用户交互。从这里开始,我做了与UIProgressView工作原理类似的所有其他事情,除了明显符合滑块处理其跟踪的方式。

我还UISlider对使用进行了子类化,(CGRect)trackRectForBounds:(CGRect)bounds以便可以将轨道高度设置为看起来更像UIProgressView.

希望这对其他人有帮助。

于 2014-05-29T21:40:34.110 回答
0

尝试使用 2 个进度条。一种用于微观,一种用于宏观。使用微一反映宏栏中的 0.1 范围。这样你就可以展示更精细的动作。

于 2013-05-10T23:39:50.337 回答
0

几天前我遇到了同样的问题,通过删除 UIProgressView 并使用两个 UIView 实例和 UIViewPropertyAnimator 实例来解决它。

基本上第一个视图代表一个空的进度,它应该采用进度条的宽度,第二个视图代表进度移动,它最初应该采用零宽度,它应该在第一个视图之上,并且两个视图应该有不同的颜色。空进度视图可能是浅灰色,实际进度视图可能是深灰色。

然后,当你的进度开始时,增加第二个视图的宽度,这样它就会覆盖空的进度视图。

使用 UIViewPropertyAnimator 制作动画,它提供了简单实用的内置功能来流畅地处理动画,例如您可以暂停和恢复动画。

于 2021-11-10T08:37:48.743 回答