我花了很多时间努力为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
,但在按下一个单元格之前仍然显示错误的大小。
答案 0 :(得分:1)
尝试将堆栈视图的间距值设置为0以外的值。我相信这将有助于iOS正确计算单元格的高度,使tableview工作