【问题标题】:Setting up constraints to drive UITableViewCell height for UITableViewAutomaticDimension设置约束以驱动 UITableViewAutomaticDimension 的 UITableViewCell 高度
【发布时间】: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 中 - 我得到了“无法满足所有约束”错误。从视觉上看,它似乎确实有效,但我担心这个错误,并希望找到正确的方法来设置它。
  • 啊,所以单元格本身的高度计算正确,但是日志被约束错误消息淹没。请查看这些消息 - 日志会告诉您导致问题的约束。您需要制作带有约束的单元格屏幕截图。让我们一起解决。

标签: ios uitableview autolayout uitableviewautomaticdimension


【解决方案1】:

我知道这有点晚了,但我只是看到了这个,希望它可以帮助遇到类似问题的人。

这是因为您正在对左右边缘应用约束,并且正在设置纵横比约束。完成后,图像视图的高度根据宽度设置,因为图像视图被固定在两侧,所以剩余的宽度不能改变,同时纵横比的约束也会发挥作用。

为了解决这个问题,可以做的是,移除左右的约束(只保留一个),将图像视图固定在顶部和底部,并设置纵横比约束。这将使宽度调整为高度,并且内容视图的高度得到正确更新。

如果此时您收到警告“图像视图的 x 位置不明确”,请设置宽度约束并将其优先级设置为小于 1000 的值(我假设这是所有其他约束的优先级)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    相关资源
    最近更新 更多