在Swift中,发生方向时如何更改表格单元格布局?
我有一个表格视图,我尝试在方向发生后通过更改自动布局约束以及单元高度来更改单元的布局 我在一个函数中更新新的约束,比如在一个cell类中更新在Swift中,发生方向时如何更改表格单元格布局?,swift,swift2,Swift,Swift2,我有一个表格视图,我尝试在方向发生后通过更改自动布局约束以及单元高度来更改单元的布局 我在一个函数中更新新的约束,比如在一个cell类中更新setMyConstraints()。如果发生定向,我会尝试在单元格中调用setMyConstraints()insidelayoutSubViews() 但是,这不是正确的位置,因为调用了多个layoutSubViews(),其中一些视图在最后一个视图之前仍然使用旧的高度。以下是我在定向后跟踪的一些日志: cell layoutSubviews calle
setMyConstraints()
。如果发生定向,我会尝试在单元格中调用setMyConstraints()
insidelayoutSubViews()
但是,这不是正确的位置,因为调用了多个layoutSubViews()
,其中一些视图在最后一个视图之前仍然使用旧的高度。以下是我在定向后跟踪的一些日志:
cell layoutSubviews called, frame.height = 69
tableview heightForRowAtIndexPath called, return height = 170
cell layoutSubviews called, frame.height = 69
cell layoutSubviews called, frame.height = 170
更糟糕的是,如果我没有在第一个布局子视图
之前清除所有约束,冲突可能已经发生了
因此,以下是所需的过程:
换句话说,当方向发生变化时,如何改变单元布局(包括约束变化和单元高度变化)
UIView
有一个可以重写的updateConstraints()
函数。这是设置约束更改代码的好地方
该方法可能会在旋转后自动调用。但是如果没有,您可以在旋转开始后或旋转结束后立即向单元格发送一条
setNeedsUpdateConstraints()
消息。您能用您提到的方法显示您的代码吗?heightforrowtaindexpath
、layoutSubviews
和setMyConstraints
?你在改变什么约束?没那么简单。我已经更新了我的问题。我试过你的主意,但失败了。如果你知道怎么做,请提供更详细的答案。谢谢