当 UIStackView 更改其排列的子视图时,UITableViewCell 不会调整大小

Posted

技术标签:

【中文标题】当 UIStackView 更改其排列的子视图时,UITableViewCell 不会调整大小【英文标题】:UITableViewCell doesn't resize when UIStackView changes its arranged subviews 【发布时间】:2016-07-05 10:34:25 【问题描述】:

我正在为我的UITableView 使用自动布局,它是自定义单元格。其中一个单元格有一个UIStackView,我在其中添加和删除排列的子视图,但是,当其排列的子视图发生变化时,单元格本身不会调整大小。

调用reloadData() 方法可以解决这个问题,但是,我只想更新一个发生变化的单元格。

但是,当我尝试调用 reloadRowsAtIndexPaths(_:withRowAnimation:) 时,它只会更新以显示排列的子视图上的先前更改。因此,例如,如果我添加一个排列好的子视图,比如说一个红色的,然后似乎什么都没有发生(即使在我检查时添加了子视图),然后添加第二个会导致单元格重新加载,但只会更新以显示前一个红色添加的排列子视图等等。

有没有办法强制特定单元格在UITableView 中布局?

更新:Here is a link to an example project showing the issue:

【问题讨论】:

你是怎么解决的? 【参考方案1】:

看来here 发布的答案有效。我选择了答案的非动画版本,但两者似乎都有效。

【讨论】:

以上是关于当 UIStackView 更改其排列的子视图时,UITableViewCell 不会调整大小的主要内容,如果未能解决你的问题,请参考以下文章

为啥 UIStackView 调整排列的子视图的大小?

当排列视图的大小发生变化时,如何确保 UIStackView 通知它的所有后代?

即使隐藏了排列的子视图,UIStackView 似乎也会堆叠间距

如何在 UIStackView 内排列的子视图上设置自定义高度?

UIStackView 隐藏/取消隐藏排列的子视图问题

如何使用自动布局来实现如下布局?