使用 UIStackView 的 UITableViewCell 的动态高度

Posted

技术标签:

【中文标题】使用 UIStackView 的 UITableViewCell 的动态高度【英文标题】:dynamic height of UITableViewCell using UIStackView 【发布时间】:2017-01-19 16:40:57 【问题描述】:

多年来,我一直在努力为 UITableViewCells 运行动态行高计算。

一个 StackView(固定在 UITableViewCells contentView 的边缘)应该允许我通过操作 StackView 内视图的 hidden 属性来控制单元格的高度(很像这里显示的:https://***.com/a/36250618/606730)

我在 viewContoller 中添加了动态高度的强制设置,如下所示:

self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44;

我没有覆盖 heightForRowAtIndexPath,因为这是我希望自动布局发挥作用的地方。

我的问题是,当 tableView 首次加载或 tableview 滚动时,单元格未正确捕获。但是当我在单元格内按下时,高度计算确实有效,并且所有单元格都显示为正确的高度。

我已经像这样覆盖了 UITableViewCell 的 setSelected:

-(void)setSelected:(BOOL)selected animated:(BOOL)animated
    [UIView setAnimationsEnabled:NO];
    [super setSelected:selected animated:animated];
    self.viewInsideStackView.hidden = !selected;
    [UIView setAnimationsEnabled:YES];

当表格视图为每个单元格加载或滚动时,这会被调用。操纵 self.viewInsideStackView.hidden 应该让堆栈视图重新计算它的高度。但这不起作用。我也尝试调用layoutIfRequired,但在我按下一个单元格之前仍然会出现错误的大小。

【问题讨论】:

你能添加一些你的tableView的图片吗?一个是第一次加载的时候,一个是你选择了一个单元格的时候? 你解决过这个问题吗?我正在努力解决同样的问题。 【参考方案1】:

尝试将堆栈视图的间距值设置为 0 以外的值。我相信这将有助于 ios 正确计算单元格的高度,从而使 tableview 工作

【讨论】:

似乎有帮助,但我真的很想知道为什么!

以上是关于使用 UIStackView 的 UITableViewCell 的动态高度的主要内容,如果未能解决你的问题,请参考以下文章

UIStackView

使用swift在UiStackview中设置UiLabel的高度

UIStackView 嵌入在 UIStackView 对齐中

UIStackView自己的intrinsicContentSize

Swift UIStackView 的使用简单示例

Swift UIStackView 的使用简单示例