使用UIStackView的UITableViewCell的动态高度

时间:2016-09-12 09:17:35

标签: ios uitableview autolayout height uistackview

我花了很多时间努力为UITableViewCells运行获得动态行高计算。

StackView(固定到UITableViewCells contentView的边缘)应该允许我通过操纵StackView中的Views的隐藏属性来控制单元格的高度(很像这里显示的那样:https://stackoverflow.com/a/36250618/606730

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

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

我没有覆盖heightForRowAtIndexPath,因为这是我想要自动布局来做魔术的地方。

我的问题是,在首次加载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];
}

当tableview加载或滚动每个单元格时,会调用此方法。操纵 self.viewInsideStackView.hidden应该使堆栈视图重新计算它的高度。但这不起作用。我也试过调用layoutIfRequired,但在按下一个单元格之前仍然显示错误的大小。

1 个答案:

答案 0 :(得分:1)

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