UITableViewAutomaticDimension 不适用于 UIImageView

Posted

技术标签:

【中文标题】UITableViewAutomaticDimension 不适用于 UIImageView【英文标题】:UITableViewAutomaticDimension not working for UIImageView 【发布时间】:2015-08-27 09:37:48 【问题描述】:

我正在使用 UITableViewAutomaticDimension 来调整具有动态标签和图像的单元格高度。

tableView.rowHeight = UITableViewAutomaticDimension;
tableView.estimatedRowHeight = 80.0;

我想随着标签内容的增加而调整单元格的大小并且它运行良好。

我想保持单元格的最小高度(比如 80),以使图像始终适合,即使标签根本没有内容。我已经应用了自动布局并为图像视图设置了恒定的高度、宽度、顶部空间和前导空间约束。但是当标签内容较少时,单元格高度会低于约束高度。

在使用“UITableViewAutomaticDimension”功能时,我应该如何使单元格保持最小高度以适合 imageView。

提前致谢。

【问题讨论】:

请检查 UITableViewAutomaticDimension 布局的约束,它需要顶部约束和底部,如果单元格包含任何单元格子视图的约束,它将完美工作。 【参考方案1】:

尝试创建一个辅助隐藏视图,将其top、bottom约束设置为cell的contentView,任意宽度和x位置,然后将其高度大于或等于设置为80。

【讨论】:

然后我得到“不等式约束歧义”错误 是的。该解决方案有效。我用 '>=' 和它的键替换了 hieght 约束 '='。谢谢【参考方案2】:

添加比例约束

[self.tableview setNeedsLayout];

[self.tableview layoutIfNeeded];

[self.tableview reloadData];

【讨论】:

【参考方案3】:

添加比例约束并将代码放在要重新加载表格视图的位置

- (void)refreshWithData:(NSArray *)synopsissarr atIndex:(NSInteger)index 

    synopsisArray=synopsissarr;

    [self.tableview setNeedsLayout];

    [self.tableview layoutIfNeeded];

    [self.tableview reloadData];

【讨论】:

【参考方案4】:

highsun16 是对的。我本来希望更详细一点。这是一个演示项目,它提供了复制 highsun16 答案所需的所有细节:

【讨论】:

还有一点,Label的行数需要为0。 请以读者容易理解的方式发布答案,即使他/她是这方面的新手。

以上是关于UITableViewAutomaticDimension 不适用于 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章