Stackview 轴更改被延迟

Stackview axis change is delayed

我有一个带有 UIStackView 的 table 视图单元格。在我的 cellForRow 方法中,我根据某些因素将堆栈视图的轴从水平更改为垂直。

出于某种原因,当我将包含 table 单元格的 viewcontroller 推送到我的导航控制器时,此更改会稍微延迟。就好像轴的变化是在推送动画完成后完成的。因此,当 viewcontroller 和单元格首次出现在屏幕上时,轴是水平的,一旦动画完成它就会变为垂直。

如果包含 table 单元格的 viewcontroller 是根 viewcontroller,更改会立即发生,所以问题似乎是推 viewcontroller并同时更改堆栈视图轴。

我曾尝试在更改访问权限后使用 self.layoutIfNeeded() 强制立即更改布局,但这似乎没有任何改变。

有没有人以前见过这种行为,有解决办法吗?

对于任何感兴趣的人,我设法通过在单元格的 traitCollectionDidChange 方法中设置轴来解决这个问题。此方法总是在创建单元格时调用,并且似乎在推送动画开始之前更新布局。