iOS 8上未返回正确的自动布局宽度

时间:2016-06-03 11:23:46

标签: ios swift ios8

我正在尝试在自定义UIView中获取UITableViewCell的宽度,以便对其外观进行一些更改。我正在使用autolayout,但是,返回的视图的宽度是在xib文件中定义的宽度。一旦自动布局布置了单元格,这与其实际宽度不同。

我的代码位于layoutSubviews()

override func layoutSubviews() {
    super.layoutSubviews()
    print(backgroundView.frame.width)
}

这适用于iOS 9,但不适用于iOS 8.调用self.setNeedsLayout()self.layoutIfNeeded()无效。我在哪里可以移动代码以显示正确的宽度?

感谢。

1 个答案:

答案 0 :(得分:0)

之前我遇到过这个问题,如果我没记错的话,它与iOS有关,直到第一次绘制视图之后才知道实际大小。我们能够通过在viewDidAppear之后刷新来更新它(就像你在刷新后提到它的大小一样),但这并不是最好的解决方案。

您可以尝试的其他功能是在您进行单元设置的任何位置操作的单元格中添加约束出口。例如,如果在某些情况下需要UI元素为某个宽度而不是其他情况,则可以添加更改值的宽度约束。这允许您的其他元素根据视图中的其他约束自行调整大小。这里的限制是你需要事先知道你的一个元素的宽度。