Cocoa touch Cocoa-iOS-更新UILabel的文本属性是否需要setNeedsDisplay?
我是一个新手,我有一个iOS项目,我正在设置UILabel字段的文本属性Cocoa touch Cocoa-iOS-更新UILabel的文本属性是否需要setNeedsDisplay?,cocoa-touch,uilabel,setneedsdisplay,setneedsdisplayinrect,Cocoa Touch,Uilabel,Setneedsdisplay,Setneedsdisplayinrect,我是一个新手,我有一个iOS项目,我正在设置UILabel字段的文本属性 self.nameLabel.text = @"abcd"; 问题 我是否需要调用setNeedsDisplayInRect以显示新文本值的标签 我的理解基于一些测试: 未调用setNeedsDisplayInRect,标签文本已更新 但我想知道标签将显示新值而不显式调用setNeedsDisplay是巧合还是意外 谢谢AUILabel将在您设置其text属性时执行更新所需的所有操作。对于它的其他属性(font,
self.nameLabel.text = @"abcd";
问题
- 我是否需要调用setNeedsDisplayInRect以显示新文本值的标签
- 未调用setNeedsDisplayInRect,标签文本已更新
- 但我想知道标签将显示新值而不显式调用setNeedsDisplay是巧合还是意外
谢谢A
UILabel
将在您设置其text
属性时执行更新所需的所有操作。对于它的其他属性(font
,textColor
,等等)也是一样的。当你设置它的text
属性时,你唯一需要手动做的事情(如果你不使用IB)就是设置框架。对于其其他属性(font
,textColor
,等等),您只需手动(如果您不使用IB)设置帧
,如果标签在文本更新后仍不刷新,您的CPU可能会被充分利用,并且以下命令将强制刷新:
self.nameLabel.text = @"abcd";
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]];
如果标签在文本更新后仍不刷新,则CPU可能已被充分利用,以下命令将强制刷新:
self.nameLabel.text = @"abcd";
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]];
非常感谢你的及时回答,我对你所说的有一点怀疑。只是为了澄清,如果在代码中设置了帧,则需要调用setNeedsDisplay?否。UIKit会处理这个问题。我只提到了frame
,因为很多人添加UILabel
s而没有设置框架(bounds
实际上),然后想知道为什么它没有出现。通常正确的做法是[label sizeToFit]
。非常感谢您的及时回答,我对您所说的有一个疑问。只是为了澄清,如果在代码中设置了帧,则需要调用setNeedsDisplay?否。UIKit会处理这个问题。我只提到了frame
,因为很多人添加UILabel
s而没有设置框架(bounds
实际上),然后想知道为什么它没有出现。通常正确的做法是[label sizeToFit]
。