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

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

一个 StackView(固定在 UITableViewCells contentView 的边缘)应该允许我通过操作 StackView 内视图的 hidden 属性来控制单元格的高度(很像这里显示的:https://stackoverflow.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的图片吗?一个是第一次加载的时候,一个是你选择了一个单元格的时候?
  • 你解决过这个问题吗?我正在努力解决同样的问题。

标签: ios uitableview autolayout height uistackview


【解决方案1】:

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

【讨论】:

  • 似乎有帮助,但我真的很想知道为什么!
猜你喜欢
  • 2021-06-13
  • 2018-06-07
  • 2019-01-26
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 2016-07-27
相关资源
最近更新 更多