代码之家  ›  专栏  ›  技术社区  ›  Hilton Campbell

当用户滚动uiScrollView时,如何让我的uiView重新绘制?

  •  1
  • Hilton Campbell  · 技术社区  · 15 年前

    我有一个根uiview,有两个子视图:

    1. 自定义uiview子类
    2. ui滚动视图

    自定义的uiview子类有一些状态,由每隔n秒触发一次的nstimer更新。当视图的状态更新时,视图调用[self-setneedsDisplay],稍后将触发重新绘制。这一切按预期工作。

    但是,每当用户滚动uiscrollview时,自定义uiview子类就不会重新绘制。当用户接触uiscrollview时,重绘停止。然后,当用户停止触摸uiscrollview并完全停止滚动时,自定义uiview子类最终会重新绘制。

    当用户滚动uiScrollView时,是否有方法让自定义uiView子类重新绘制?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    我更倾向于Mac,但我认为,因为-setneedsdisplay:flags for 未来 重新绘制,它永远不会发生,因为滚动/触摸事件仍在捆绑当前(主)循环。在这种情况下,计时器永远不会有机会触发主runloop,因为滚动尚未完成。

    更正

    快速搜索将显示使用NSRELOOPCOMMONMODES将计时器添加到运行循环中可防止它们暂停。这可能会帮你解决问题,但你可能仍然会遇到“标记未来显示”和“现在就画”。

    另一个添加

    啊。似乎 this has already been answered on SO .