【问题标题】:Cocoa - iOS -Does updating the text property of a UILabel require setNeedsDisplay?Cocoa - iOS - 更新 UILabel 的文本属性是否需要 setNeedsDisplay?
【发布时间】:2012-02-23 20:31:39
【问题描述】:

我是新手,我有一个 iOS 项目,我在其中设置 UILabel 字段的文本属性。

self.nameLabel.text = @"abcd";

问题

  • 是否需要为要显示的新文本值的标签调用 setNeedsDisplayInRect ?

我的理解基于一些测试:

  • 在不调用 setNeedsDisplayInRect 的情况下,标签的文本已更新,
  • 但我想知道这是巧合还是保证标签会在不显式调用 setNeedsDisplay 的情况下显示新值

谢谢

【问题讨论】:

    标签: cocoa-touch uilabel setneedsdisplay setneedsdisplayinrect


    【解决方案1】:

    当您设置text 属性时,UILabel 将完成更新所需的一切工作。其他属性也一样(fonttextColor 等)。您唯一需要手动执行的操作(如果您不使用 IB)就是设置frame

    【讨论】:

    • 非常感谢您的及时回答,我对您所说的有一个疑问。只是为了澄清如果您在代码中设置框架,那么您需要调用 setNeedsDisplay ?
    • 没有。 UIKit 会处理这个问题。我只提到了frame,因为很多人在没有设置框架的情况下添加UILabels(实际上是bounds)然后想知道为什么它没有出现。通常/通常正确的做法是[label sizeToFit]
    【解决方案2】:

    如果文本更新后标签没有刷新,则可能是你的 CPU 已被充分利用,以下命令将强制刷新:

    self.nameLabel.text = @"abcd";
    [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-20
      相关资源
      最近更新 更多