在 UIStackView 中调整包含图像的子视图

Resizing subview containing image in UIStackView

不久前,我认为用 UIStackView 替换我自己的滚动视图中的多个视图的布局可能是个好主意。 但经过一个多星期的挫折,我寻求帮助: 我想放置这样的子视图:

在垂直 UIStackView 中(对齐填充、分布填充)。 UIImageView 的内容模式是 aspect fill,图像在运行时设置并且可以在运行时改变(尤其是它的 aspect)。 我希望子视图水平填充堆栈视图并垂直调整大小以保持图像的纵横比不变。

当我不添加任何特殊约束时,我不会收到布局警告,但是当我更改图像时,我的堆栈视图中的子视图不会调整大小。 如果我每次设置图像时都向 UIImageView 添加纵横比约束,我会在第一次更改图像时收到布局警告,之后它不会调整子视图的大小。

你们中的自动布局向导可以帮助我吗?

您不能根据稍后将加载的图像对 ImageView 设置约束。你应该做的是

  • 为您的 ImageView
  • 设置身高限制
  • IBOutlet 连接到此约束条件
  • 加载图片后,找出它的纵横比
  • 计算所需的高度,因为您已经知道宽度 (stackView 的宽度)
  • 将此高度设置为您 ImageView 的高度限制