【问题标题】:How to set autolayout constraint so that the height of an UIImageView is equal to the height of the superview?如何设置自动布局约束,使 UIImageView 的高度等于父视图的高度?
【发布时间】:2019-05-18 14:40:06
【问题描述】:

我创建了一个 UIView,它由 3 个 UILabels 和 1 个 UIImageView 组成,如下所示 -

UILabels 将 lines 设置为 0,以便 UILabels 的高度动态变化

我添加了约束,使图像的高度取决于UILabels 的高度,如下所示 -

我已将UIImageView 的宽度设置为常数 100。

我想对UIImageView 设置一个约束,使UIImageView 的高度等于整个视图的高度。

我尝试在UIImageView 和整个视图上添加“等高”约束。我观察到整个视图的高度取决于UIImageView 的高度,而不是UIImageView 的高度取决于我想要的整个视图。

谁能指出我如何向UIImageView 添加约束,使其高度等于其父视图,但父视图的高度不依赖于UIImageView

编辑 - 下图显示了我面临的问题。当图像设置为UIImageView 时,视图的高度会发生变化。 我希望UIImageView 的高度等于视图的高度,但我不希望视图的高度依赖于UIImageView 的高度

【问题讨论】:

  • 您是否为视图设置了任何高度限制?
  • 有什么问题?截图看起来不错?
  • @JatinKathrotiya 我没有为视图设置高度约束,但我已经为 3 个标签设置了顶部和底部约束,因此视图的高度取决于它的子视图(3 个标签)跨度>
  • 您是否尝试为Image bottom 添加约束等于View bottom
  • 而且,如果这些 UILabel 可以有空字符串,那么你需要为图像设置一个关于minimum height 的约束。例如,Image Height >= 100

标签: ios uiimageview autolayout


【解决方案1】:

事实上,UIImageView 的默认压缩阻力是 750,而根 UIView 的内容拥抱是 250。这意味着 AutoLayout 引擎可以正确布局所有内容。您可以将垂直压缩阻力更改为低于 250 (UILayoutPriority.defaultLow - 1) 的值以实现所需的布局。

【讨论】:

    【解决方案2】:

    看起来您需要减少图像视图上的vertical content compression resistance

    将其设置为非常低的值,例如 100,然后重试。

    【讨论】:

      【解决方案3】:

      我相信您还没有将高度约束添加到超级视图。为超级视图设置高度约束,然后在 UIImageView 和整个视图上添加“等高”约束。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-21
        • 2013-06-11
        • 1970-01-01
        • 2012-10-29
        • 1970-01-01
        • 2022-01-21
        相关资源
        最近更新 更多