使用 UIStackView 的 UITableViewCell 的动态高度
Posted
技术标签:
【中文标题】使用 UIStackView 的 UITableViewCell 的动态高度【英文标题】:dynamic height of UITableViewCell using UIStackView 【发布时间】:2017-01-19 16:40:57 【问题描述】:多年来,我一直在努力为 UITableViewCells 运行动态行高计算。
一个 StackView(固定在 UITableViewCells contentView 的边缘)应该允许我通过操作 StackView 内视图的 hidden 属性来控制单元格的高度(很像这里显示的:https://***.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的图片吗?一个是第一次加载的时候,一个是你选择了一个单元格的时候? 你解决过这个问题吗?我正在努力解决同样的问题。 【参考方案1】:尝试将堆栈视图的间距值设置为 0 以外的值。我相信这将有助于 ios 正确计算单元格的高度,从而使 tableview 工作
【讨论】:
似乎有帮助,但我真的很想知道为什么!以上是关于使用 UIStackView 的 UITableViewCell 的动态高度的主要内容,如果未能解决你的问题,请参考以下文章
使用swift在UiStackview中设置UiLabel的高度
UIStackView 嵌入在 UIStackView 对齐中