【发布时间】:2017-01-19 16:40:57
【问题描述】:
多年来,我一直在努力为 UITableViewCells 运行动态行高计算。
一个 StackView(固定在 UITableViewCells contentView 的边缘)应该允许我通过操作 StackView 内视图的 hidden 属性来控制单元格的高度(很像这里显示的: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];
}
当表格视图为每个单元格加载或滚动时,这会被调用。操纵
self.viewInsideStackView.hidden 应该让堆栈视图重新计算它的高度。但这不起作用。我也尝试调用layoutIfRequired,但在我按下一个单元格之前仍然会出现错误的大小。
【问题讨论】:
-
你能添加一些你的tableView的图片吗?一个是第一次加载的时候,一个是你选择了一个单元格的时候?
-
你解决过这个问题吗?我正在努力解决同样的问题。
标签: ios uitableview autolayout height uistackview