【问题标题】:Resizing subview containing image in UIStackView调整 UIStackView 中包含图像的子视图的大小
【发布时间】:2018-10-27 10:29:20
【问题描述】:

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

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

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

请问各位自动布局向导可以帮帮我吗?

【问题讨论】:

    标签: ios swift uiimageview autolayout uistackview


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的建议 - 我会尝试。
    • 天哪 - 就是这样 - 再次非常感谢!尽管如此,自动布局现在对我来说还是一个 PITA,因为我找不到有效跟踪和调试所有约束的方法。 Xcode 太笨拙了 :(
    • @mav 很高兴能帮上忙。约束可能看起来有点压倒性,但一旦你习惯了这个想法,它们就会非常强大,你可以用更少的资源做更多的事情。如果您的问题已经解决。请将答案标记为已接受
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多