【问题标题】:UIProgressView with progress at low values issueUIProgressView 进度低的问题
【发布时间】:2013-05-10 22:50:23
【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

  • 进度条的宽度是多少?你在视网膜显示屏上吗?
  • 它的宽度是 110,我至少在模拟器中看不到 Retina 和正常之间的区别。根据您的评论,我尝试使宽度更大,效果是更小的“死”范围,但对于 300 宽度的进度条仍然很重要。我相信我看到了更长的条形图具有更高准确性的原因,但对我来说,为什么条形图在开始时的小死区之后的每个点都移动得很好。
  • 5 年多后,我遇到了和你一模一样的问题……这个非常奇怪的错误是什么?我解决不了
  • 我在 2016 年底遇到了与 Swift 完全相同的问题!我原以为苹果现在会解决这个问题,但我想不会。这肯定很烦人。

标签: iphone ios uiprogressview


【解决方案1】:

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

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

我还将UISlider 子类化为使用(CGRect)trackRectForBounds:(CGRect)bounds,这样我就可以将轨道高度设置为看起来更像UIProgressView

希望这对其他人有所帮助。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的想法。我试了一下,将宽度为 10 的微条设为宽度为 100 的宏条。不幸的是,微栏似乎太小而无法注册更改。对我来说,它在 0.001 和 1.0 看起来完全一样。基本上在这个尺寸下,它有一个 0.0 的图像(空栏)和一个高于 0.0 的图像(全栏)。无论是在情节提要中查看它还是模拟它的视网膜和非视网膜,这都是正确的。除非我误解了。
    • 我想你确实误会了。我的意思是让你使用微条来反映每 0.1。这意味着您乘以 10。例如,您当前的计数是 0.452,您在宏条上反映 0.4,在微条上反映 0.52。如果您的计数从 0.452 增加到 0.482,您的宏显示为 0.482,但您的微现在显示为 0.82。当您的计数达到 0.5 时,您将微型重置为零并重新开始......
    • 啊,好吧,我明白你的意思了!我最初认为您的意思是在较大的条上覆盖一个较小的条以覆盖 0 到 0.1 之间的“死区”,但我看到您的意思是实际上分别有两个条(我认为)。我可能不得不走这条路。尽管如此,让我感到困扰的是,仅在 0 到 0.1 的范围内,我无法通过一根杆获得所需的精度。无论出于何种原因,0.1 到 1.0 之间的任何地方都可以注册 0.003 大小更改。感谢您的帮助。
    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-18
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多