使用UIStackView的UITableViewCell的动态高度

Jak*_*kob 5 height uitableview ios autolayout uistackview

在很长一段时间里,我一直在努力为UITableViewCells运行获得动态行高计算.

一个StackView(钉在UITableViewCells内容查看的利润)应该允许我多操纵StackView(内查看的隐藏属性来控制单元格的高度类似如下所示:/sf/answers/2537543291/)

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

self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44;
Run Code Online (Sandbox Code Playgroud)

我没有覆盖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];
}
Run Code Online (Sandbox Code Playgroud)

当tableview加载或滚动每个单元格时调用它.操作self.viewInsideStackView.hidden应该使堆栈视图重新计算它的高度.但这不起作用.我也尝试过呼叫layoutIfRequired但是在我按下一个小区之前仍然出现错误的大小.

小智 1

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