【发布时间】:2015-01-10 18:48:20
【问题描述】:
在我的 ViewController 中触发了很多 viewDidLayoutSubviews 事件。最终我缩小到触发事件的单行代码:
self.debugLabel.text = [NSString stringWithFormat:@"%@ - %@", key, [@(tag) stringValue]];
它是添加到 ViewController 的 self.view 的子视图中的 UILabel。为什么更改UILabel 的文本会导致边界更改?在viewDidLayoutSubviews文档:
当视图控制器视图的边界发生变化时,视图 调整其子视图的位置,然后系统调用它 方法。
附言我确信 debugLabel 的字体大小足够小以适合其框架。
【问题讨论】:
-
我不久前注意到了这一点。在我看来,这总是一个错误。
-
您是否检查过标签的框架在设置文本后是否真的发生了变化?
-
这里没有错误。这是正常行为。你看得太仔细了,什么都不担心。别担心,开心就好。你不应该关心布局被触发的频率。
-
这个问题似乎是题外话,因为它是预期的行为,而不是问题。
-
setTitle:forState:不会触发viewDidLayoutSubviews
标签: ios uiviewcontroller viewdidlayoutsubviews