【问题标题】:Stackview axis change is delayedStackview 轴更改延迟
【发布时间】:2018-04-13 16:55:12
【问题描述】:

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

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

如果包含表格单元格的视图控制器是根视图控制器,则更改会立即发生,因此问题似乎是同时推送视图控制器和更改堆栈视图轴的组合。

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

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

【问题讨论】:

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

标签: ios uitableview uinavigationcontroller autolayout uistackview


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 2018-04-06
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多