代码之家  ›  专栏  ›  技术社区  ›  Kashif Richard Brightwell

如何处理对UI来说太快的更新?

  •  0
  • Kashif Richard Brightwell  · 技术社区  · 7 年前

    DispatchQueue.main.async {
        self.runningLabelView.text = text
    }
    

    text

    这对于UI来说似乎太快了,因为文本在前1秒之后会持续更新几秒钟。

    在这个循环过程中,我可以跳过任何挂起的文本更新吗?这样文本更新就会随着循环的完成而完成吗?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Paulw11    7 年前

    你的问题是 text 在将闭包添加到调度队列时捕获,而不是在执行闭包时捕获。这意味着每个单独的文本赋值将按顺序进行。

    self.messageText = someNewValue
    DispatchQueue.main.async {
        self.runningLabelView.text = self.messageText
    }
    

    另一种可能更好的方法是发送更少的更新,但您需要提供更多的信息。