图像因约束而无法正常工作

时间:2017-10-01 05:31:49

标签: ios uiimageview autolayout interface-builder

我有一个根UIView(用于渲染阴影),它的内容是另一个UIVIew,其中包含UIImage和底部的一些标签。当我查看在界面构建器中设置约束的示例海报时,它看起来或多或少是我想要的。

在此屏幕截图中,DropshadowUI View保留内容并呈现阴影。 CardView同时保留底部的UIImageViewUILabelDropshadowUI View是透明的,CardView有蓝色背景,是阴影的完整高度/宽度(带有一点边距),UIImageView有绿色背景在测试时帮助区分视图。您可以看到UIImageView占据CardView布局的大约80%,这是所需的。 CardView的其余部分由UILabel s。

组成

enter image description here

但是,当我运行应用程序时,约束似乎与界面构建器中显示的方式不同。 UIImageView延伸以占据CardView的整个高度。由于这个原因,UILabel被隐藏起来了。从我的UINavigationBar和UITabBar背后的绿色模糊来看,UIImageView似乎垂直延伸超出可见区域的范围,尽管图像甚至没有那么大。

enter image description here

现在在界面构建器中设置UIImageView图像(将在此方式下以编程方式设置)。内容模式是Aspect Fit。为什么UIImageView垂直伸展? Status标签在Superview底部的底部空间设置为8个点。 Year标签的底部空间被限制在状态的顶部。 Movie Title的底部被限制在Year的顶部。 Movie Title将其顶部限制在UIImageView的底部。假设标签会阻止图像视图在底部生长,而是通过拉伸顶部来获得更高(这被限制在超视图视图顶部。

我的约束有问题吗?我还在学习自动布局系统,所以如果屏幕截图中的某些内容无法解释我的约束,请告诉我如何帮助澄清它们。

修改

我将UIImageView重置为建议的约束,并在运行时以此结束,尽管设计时视图看起来正确。

enter image description here

有没有办法让我限制UIImageView,使图像只能变得更高,直到空间不足以适应其他内容?我在这里错过了我的底部标签,因为现在图像适合UIImageView,但将其他所有内容推向远处。我宁愿尽量填充尽可能多的水平空间,直到它下面的兄弟姐妹不能再被推下去了。

我得到的,与我想要的相比

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

选择您的图片,然后转到布局问题工具>重置为建议的约束