【发布时间】:2016-12-09 11:23:12
【问题描述】:
有一个问题,即 UITableViewCell 中自动调整大小的 UILabel 在加载视图时具有不正确的框架,但在表格滚动时,标签大小会神奇地更新,因此框架是正确的。
这是单元格内标签的约束,这里没有歧义,所以表格应该自动选择大小没问题:
我也在代码中配置了一些 UI,如下所示:
[self.label setText:localFieldObject.value];
[self.label setDelegate:self];
[self.label setLineBreakMode:NSLineBreakByWordWrapping];
[self.label setNumberOfLines:0];
[self.label layoutIfNeeded];
请注意,如果我在layoutIfNeeded 上中断,尽管刚刚设置了行数,但它是零。不过self.label 确实有值。
我还使用视图调试器检查滚动前后的帧,看起来单元格的大小在两种情况下都正确,但单元格内标签的框架正在发生变化,但约束没有变化。我尝试了来自类似问题的各种建议,但目前还没有解决问题。
如果您有任何进一步的信息想问;提前致谢。
【问题讨论】:
-
你在哪里调用这些代码?
-
代码在
awakeFromNib中有效调用,肯定是在从笔尖加载视图之后。从self.label不为零这一事实可以清楚地看出这一点。 -
尝试将
[self.label layoutIfNeeded];更改为[self.contentView layoutIfNeeded];,标签的子视图不需要布局 -
self.layoutIfNeeded无论如何都会调用self.contentView.layoutIfNeeded,因为contentView是self的子视图,layoutIfNeeded会在整个视图层次结构中回显。 -
那行得通吗?
标签: ios objective-c uitableview uilabel nslayoutconstraint