UIImageView 高度不是自动布局约束后子图像高度的高度。
Posted
技术标签:
【中文标题】UIImageView 高度不是自动布局约束后子图像高度的高度。【英文标题】:UIImageView height not height of child image's height after autolayout constraints. 【发布时间】: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 的宽度成为屏幕的宽度,而不是使用这些约束?【问题讨论】:
【参考方案1】:将以下约束添加到 imageView:
“纵横比”约束,乘数设置为 imageView 的纵横比。
例如:
如果图像的尺寸为 (600 x 300),则“纵横比”乘数将为 2:1
【讨论】:
是的,做到了!非常感谢! 如果图片是动态加载的,你不知道长宽比是多少,你会怎么做?一定要取 UIImage 并计算比例吗?以上是关于UIImageView 高度不是自动布局约束后子图像高度的高度。的主要内容,如果未能解决你的问题,请参考以下文章
UILabel 动态高度和 UIImageView 恒定高度