ios - 内容拥抱和内容压缩阻力、自动布局约束的问题

标签 ios autolayout constraints

我已将问题修改为提供更多信息且更清晰。

我想要一个动态表格 View 单元格,具有灵活的 UITextView 高度和一个可选的 UIImageView。根据 UITextView 和可选 UIImageView 的内容大小,可以缩小或扩展单元格。

这是我所期望的(下图):

  • 正常大小:TextView 的高度是固定的(比如 77)。 ImageView 的宽度和高度也是固定的(比如 130、130)
  • 当 TextView 的内容大小减小时,单元格缩小,ImageView 向上移动。
  • 当 ImageView 中没有图像时,ImageView 不显示,单元格被缩小。

  • enter image description here

    以下是 View 的结构:
  • mainView 是 contentView
  • 的 subview
  • topView、textView、bigImageView、bottomView 是 mainView 的 subview

  • enter image description here

    但是,我实际得到的如下。
  • 左图:如果内容很大,那么就看不到 ImageView。
  • 右图:如果内容大小为一行,可以看到ImageView,但是它的宽高不是固定的 130, 130

  • enter image description here

    警告问题如下:

    enter image description here

    如果我通过选择“添加缺少的约束”来修复它,我得到的结果如下:
  • 右图显示 TextView 的高度不再灵活。

  • enter image description here

    TextView 的约束、Content Hugging Priority、Content Compression Resistance 和 Intrinsic Size:
  • 我没有为这个 TextView 使用固有大小

  • enter image description here

    ImageView 的约束、内容拥抱优先级、内容压缩阻力和内在大小:
  • 我为这个 ImageView 使用了固有尺寸

  • enter image description here

    我一直在为 TextView 和 ImageView 使用 Hugging Priority 和 Compression Resistance Priority 但没有运气。没有一个结果是我所期望的。

    请帮助指出设置中有什么问题以及如何实现我的目标。

    最佳答案

    这里棘手的部分似乎是,当有图像时,您希望它为 130x130,但当没有图像时,您希望将其隐藏。

    我的建议是为 <= 130 而不是 = 130 的高度和宽度添加一个约束,并为纵横比添加一个 1:1 的约束。

    这将允许 ImageView 在没有图像时缩小到 0x0。

    当有图像时,它将缩放到图像大小,但保持正方形。它永远不会大于 130x130。不是你想要的,但很接近。

    你不应该担心拥抱和压缩我不认为。

    做你想做的事我认为需要代码。您需要为高度和宽度约束创建 IBOutlets,但这次使它们 =130。在您的代码中,当您将图像设置到 ImageView 中时,将代码中的约束常量设置为 130 或 0。我认为这是实现您所要求的唯一方法。为此,您可以 CTRL 将宽度和高度约束拖到 Controller 的 .h 中并创建 IBOutlets。这就是我处理约束的方式,这些约束需要根据单元格数据模型的状态做出决定。

    关于ios - 内容拥抱和内容压缩阻力、自动布局约束的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29312778/

    相关文章:

    mysql - 删除时对 c :n with combined PK 的空字段设置空约束

    sql - 当我想使用数据库约束但只标记为已删除而不是删除时该怎么办?

    vb.net - 扩展方法上的通用约束的奇怪行为

    ios - viewDidLoad 中未知的 Storyboard按钮

    ios - 将数据传递给 TableView Controller

    ios - iPhone 的分发证书

    ios - atos提供___lldb_unnamed_function

    ios - AutoLayout Storyboard 约束 - 如何在代码中修改以在 Orientation 更改中使用此修改

    ios - 无法将顶部约束添加到 View

    ios - 使用自动布局时 UIScrollview 的中心内容