首页 文章

使用UIStackView的UITableViewCell的动态高度

提问于
浏览
5

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

StackView(固定到UITableViewCells contentView的边缘)应该允许我通过操纵StackView中的Views的隐藏属性来控制单元格的高度(很像这里显示的: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];
}

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

1 回答

  • 0

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

相关问题