【问题标题】:UIImageView height not height of child image's height after autolayout constraints.UIImageView 高度不是自动布局约束后子图像高度的高度。
【发布时间】:2015-07-23 17:20:33
【问题描述】:

我的目标:

  • 图像的宽度 == 屏幕的宽度。
  • 纵横比保持不变,因此高度会自动调整。
  • UIImageView 的高度 == 子图像的高度。 (您将在下面看到当前无法正常工作的内容)

我正在使用 XCode 6,AutoLayout 约束故事板来完成这个。


查看以下 2 个屏幕截图,了解 (1) 应用当前的外观以及 (2) 我需要修复的内容。

正如您在屏幕截图左侧看到的那样,我的故事板已选择图像视图。

  • imageview 的宽度覆盖了屏幕的宽度
  • 我已将背景颜色设置为黑色,这样您就可以看到 imageview 如何拉伸它的高度。
  • 查看屏幕截图的最右侧,查看到目前为止我设置的 3 个约束。前两个是为了适应屏幕上的图像视图,最后一个是确保它位于导航栏下方。很正常的约束。

到目前为止,看截图,我的前 2 个目标是满意的。图像的宽度是屏幕的宽度(您可以在屏幕截图中的 iPhone 4 预览中看到),并且纵横比保持不变。


现在,这就是我遇到的问题......

如何消除图像上方和下方的黑色空间?黑色来自图像视图。 我希望图像视图的高度与其内部图像设置的高度相同。


我的一些猜测:

  • 是否应该为每个可用的尺寸等级创建约束?因此,与其编辑 wAny 和 hAny,不如为 iPhone 设置 imageview 的高度限制,为 iPad 设置一个使用其特定尺寸类的高度限制?
  • 如果我删除前导和尾随约束,它似乎摆脱了黑色空间,但图像视图不再适合屏幕,因此需要约束。有没有其他方法可以让 imageview 的宽度成为屏幕的宽度,而不是使用这些约束?

【问题讨论】:

    标签: ios uiimageview autolayout nslayoutconstraint ios-autolayout


    【解决方案1】:

    将以下约束添加到 imageView:

    “纵横比”约束,乘数设置为 imageView 的纵横比。

    例如:

    如果图像的尺寸为 (600 x 300),则“纵横比”乘数将为 2:1

    【讨论】:

    • 是的,做到了!非常感谢!
    • 如果图片是动态加载的,你不知道长宽比是多少,你会怎么做?一定要取 UIImage 并计算比例吗?
    猜你喜欢
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2018-02-25
    • 2014-06-25
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 2013-11-21
    相关资源
    最近更新 更多