gpt4 book ai didi

swift - 在 Swift 中,当方向发生时如何更改表格单元格布局?

转载 作者:行者123 更新时间:2023-11-30 13:49:04 25 4
gpt4 key购买 nike

我有一个表格 View ,我尝试在方向发生后通过更改自动布局约束以及单元格的高度来更改单元格的布局。

我更新函数中的新约束,例如单元类中的setMyConstraints()。如果发生方向,我会尝试在单元格的 layoutSubViews() 内调用 setMyConstraints()

但是,这不是正确的位置,因为调用了多个 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

更糟糕的是,如果我没有在第一个 layoutSubViews 之前清除所有约束,冲突可能已经发生。

因此,这是所需的过程:

  1. 设备方向发生

  2. 清除单元格内 View 的所有约束

  3. 单元格 View 旋转并获取更新的高度

  4. 为单元格内的 View 添加更新的约束

我找不到执行 (2) 和 (4) 的正确位置。我尝试了几种想法,但都失败了,有些非常接近,但我仍然找不到合理/完美的地方来这样做。

换句话来说,当方向发生时如何改变单元格布局(包括约束改变和单元格高度改变)?

最佳答案

UIView 有一个可以重写的 updateConstraints() 函数。这是设置约束更改代码的好地方。

该方法可能会在旋转后自动调用。但如果没有,您可以在旋转开始或完成后立即向单元格发送 setNeedsUpdateConstraints() 消息。

关于swift - 在 Swift 中,当方向发生时如何更改表格单元格布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34540429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com