设置约束以驱动 UITableViewAutomaticDimension 的 UITableViewCell 高度
Posted
技术标签:
【中文标题】设置约束以驱动 UITableViewAutomaticDimension 的 UITableViewCell 高度【英文标题】:Setting up constraints to drive UITableViewCell height for UITableViewAutomaticDimension 【发布时间】:2014-12-18 23:14:30 【问题描述】:我有一个自定义 tableViewCell,我正在尝试设置约束,以便我可以使用 tableView.rowHeight = UITableViewAutomaticDimension。
为了简单起见,假设我有一个 uiTableViewCell,它的内容视图只包含 UIImageView。 UIImageView 被限制为保持一定的纵横比,并固定在单元格内容视图的左侧、右侧和顶部。我希望我的内容视图的高度由 UIImage 视图的高度驱动。
我一直在尝试通过将内容视图底部固定到 UIIMage 视图底部来解决此问题,但在运行时出现“无法满足所有约束”错误。正确的设置方法是什么?
【问题讨论】:
您的目标 ios 版本是什么? iOS 8+ 或更早版本? ios 8+ 是的。任何真正支持 UITableViewAutomaticDimension 的操作系统。 请确认,您在 iOS 8 中尝试过 UITableViewAutomaticDimension,但没有成功?它不适用于 iOS 7,但它应该在 iOS8+ 中。 我只针对ios8+,甚至没有在ios7中测试过。我看到的结果在 ios 8 中 - 我得到了“无法满足所有约束”错误。从视觉上看,它似乎确实有效,但我担心这个错误,并希望找到正确的方法来设置它。 啊,所以单元格本身的高度计算正确,但是日志被约束错误消息淹没。请查看这些消息 - 日志会告诉您导致问题的约束。您需要制作带有约束的单元格屏幕截图。让我们一起解决。 【参考方案1】:我知道这有点晚了,但我只是看到了这个,希望它可以帮助遇到类似问题的人。
这是因为您正在对左右边缘应用约束,并且正在设置纵横比约束。完成后,图像视图的高度根据宽度设置,因为图像视图被固定在两侧,所以剩余的宽度不能改变,同时纵横比的约束也会发挥作用。
为了解决这个问题,可以做的是,移除左右的约束(只保留一个),将图像视图固定在顶部和底部,并设置纵横比约束。这将使宽度调整为高度,并且内容视图的高度得到正确更新。
如果此时您收到警告“图像视图的 x 位置不明确”,请设置宽度约束并将其优先级设置为小于 1000 的值(我假设这是所有其他约束的优先级)。
【讨论】:
以上是关于设置约束以驱动 UITableViewAutomaticDimension 的 UITableViewCell 高度的主要内容,如果未能解决你的问题,请参考以下文章