我有一个根 UIView
(用于渲染阴影),它的内容是另一个 UIVIew
,它包含一个 UIImage
和底部的一些标签.当我在 Interface Builder 中查看带有我的约束设置的示例海报时,它看起来或多或少是我想要的。
在此屏幕截图中,DropshadowUI View
保存内容并呈现阴影。 CardView
在底部包含 UIImageView
和 UILabel
。 DropshadowUI View
是透明的,CardView
有蓝色背景并且是 dropshadow 的完整高度/宽度(带一点边距)和 UIImageView
具有绿色背景,有助于在测试时区分 View 。您可以看到 UIImageView
占据了 CardView
布局的大约 80%,这是我们希望的。 CardView
的其余部分由 UILabel
组成。
但是,当我运行该应用程序时,约束的工作方式似乎与界面生成器中所示的不同。 UIImageView
拉伸(stretch)以占据 CardView
的整个高度。因此,UILabel
被隐藏了。从我的 UINavigationBar 和 UITabBar 后面的绿色模糊来看,UIImageView
似乎垂直拉伸(stretch)超出了可见区域的范围,尽管图像甚至没有那么大。
UIImageView
图像现在在界面生成器中设置(当它工作时将以编程方式设置)。内容模式是 Aspect Fit。为什么 UIImageView
垂直拉伸(stretch)? Status
标签有一个 Bottom Space to bottom of Superview 设置为 8 点。 Year
标签的底部空间被限制在 Status 的顶部。 Movie Title
的底部被限制在 Year
的顶部。 Movie Title
的顶部限制在 UIImageView
的底部。假设标签会阻止 ImageView 在底部增长,而是通过拉伸(stretch)顶部(限制在父 View View 顶部)来变高。
我的约束有问题吗?我仍在学习自动布局系统,所以如果屏幕截图中的某些内容无法帮助解释我的限制,请告诉我我可以做些什么来帮助澄清它们。
编辑
我将 UIImageView
重置为建议的约束并在运行时结束,尽管设计时 View 看起来正确。
我有没有办法限制 UIImageView,使图像只能变高,直到空间不足以容纳其余内容?我在这里丢失了我的底部标签,因为现在图像适合 UIImageView
但将其他所有内容推到很远的地方。我宁愿它尝试填充尽可能多的水平空间,直到它下面的 sibling 不能再被进一步向下推。
我得到的,与我想要的
最佳答案
选择您的图像并转到布局问题工具 > 重置为建议的约束
关于ios - 图像在约束条件下未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46509524/