Ios 调整视图中包含图像的子视图的大小

Ios 调整视图中包含图像的子视图的大小,ios,swift,uiimageview,autolayout,uistackview,Ios,Swift,Uiimageview,Autolayout,Uistackview,不久前,我认为将scrollview中的许多视图的布局替换为UIStackView可能是一个好主意。 但在经历了一周多的挫折后,我请求帮助: 我希望像这样放置子视图: 在垂直视图内(路线填充、分布填充)。UIImageView的内容模式是aspect fill,图像在运行时设置,可以在运行时更改(尤其是其aspect)。 我希望子视图水平填充堆栈视图,并垂直调整大小,以保持图像的纵横比不变 当我不添加任何特殊约束时,我不会得到布局警告,但是当我更改图像时,堆栈视图中的子视图不会调整大小。 如果

不久前,我认为将scrollview中的许多视图的布局替换为UIStackView可能是一个好主意。 但在经历了一周多的挫折后,我请求帮助: 我希望像这样放置子视图:

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

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


您的自动布局向导中有人可以帮助我吗?

您不能基于稍后加载的图像在
图像视图上设置约束。你应该做的是

  • 图像视图上设置高度约束
  • IBOutlet
    连接到此约束
  • 加载图像时,找出其纵横比
  • 计算所需高度,因为您已经知道宽度 (stackView的宽度)
  • 将此高度设置为
    图像视图的高度约束

谢谢你的建议-我会尽力的。哦,孩子-就是这样-再次非常感谢!尽管如此,自动布局现在对我来说还是一个很重要的问题,因为我无法找到一种有效跟踪和调试所有约束的方法。Xcode是如此笨拙:(@mav很高兴能提供帮助。约束可能看起来有点难以克服,但一旦你习惯了这个想法,它们非常强大,你可以用更少的钱做更多的事情。如果你的问题已经解决。请将答案标记为已接受