就像标题所说的那样,我有一个UIButton,当我使用self.titleLabel.frame.size.width
时,它的长度为0,但是当我在与执行控制台打印出来的日志语句相同的行中暂停执行时,而是使用po self.titleLabel
打印出对象,它将我的帧设置为(24.5,9; 190,22.5),因此宽度为190,而不是0.
是否有人知道这两个值之间的差异或原因是什么?我如何让我的代码读取正确的宽度?
答案 0 :(得分:1)
您使用的是autolayout吗? autolayout在创建对象后放置元素并遵循约束(即ViewDidLoad,当您获得第一个值时),并且在您有机会使用您覆盖的方法自定义布局之前。
答案 1 :(得分:0)
所以我想出了答案。设置标签的标题后(在视图加载时实际发生,因为它全部在故事板中)AutoLayout在下一个绘图周期之前不会更新视图的宽度。
所以,为了解决这个问题,我只需在我需要宽度的代码之前添加[self.view setNeedsLayout]
后跟[self.view layoutIfNeeded]
,以便强制AutoLayout在我需要时设置视图的宽度