Ios Stackview轴更改延迟

Ios Stackview轴更改延迟,ios,uitableview,uinavigationcontroller,autolayout,uistackview,Ios,Uitableview,Uinavigationcontroller,Autolayout,Uistackview,我有一个带有一个视图的tableview单元格。在cellForRow方法中,我根据某些因素将stackview的轴从水平方向更改为垂直方向 由于某些原因,当我将包含表格单元格的viewcontroller推到navigationcontroller上时,此更改会稍微延迟。这就好像在推送动画完成后完成了轴更改一样。因此,当viewcontroller和单元格第一次出现在屏幕上时,轴是水平的,动画完成后,轴将变为垂直 如果包含表格单元格的viewcontroller是rootviewcontrol

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

由于某些原因,当我将包含表格单元格的viewcontroller推到navigationcontroller上时,此更改会稍微延迟。这就好像在推送动画完成后完成了轴更改一样。因此,当viewcontroller和单元格第一次出现在屏幕上时,轴是水平的,动画完成后,轴将变为垂直

如果包含表格单元格的viewcontroller是rootviewcontroller,则更改会立即发生,因此问题似乎是同时按下viewcontroller和更改stackview轴的组合

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


以前有人见过这种行为吗?有没有解决方案?

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

在哪里添加代码以更改堆栈视图轴?它位于表格单元格类中,并在viewcontroller中的cellForRow方法中执行。只有在启用视图控制器后,才会重新加载表格视图已在内存中完全加载,只有在推送动画完成后才会发生。请尝试将轴更改代码移动到主队列。这可能会解决问题。我不确定,主队列上已经进行了轴更改。然而,我设法解决了这个问题。如果您感兴趣,请参阅下面我的答案: