ios - 图像在约束条件下未按预期工作

标签 ios uiimageview autolayout interface-builder

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

在此屏幕截图中,DropshadowUI View 保存内容并呈现阴影。 CardView 在底部包含 UIImageViewUILabelDropshadowUI View 是透明的,CardView 有蓝色背景并且是 dropshadow 的完整高度/宽度(带一点边距)和 UIImageView 具有绿色背景,有助于在测试时区分 View 。您可以看到 UIImageView 占据了 CardView 布局的大约 80%,这是我们希望的。 CardView 的其余部分由 UILabel 组成。

enter image description here

但是,当我运行该应用程序时,约束的工作方式似乎与界面生成器中所示的不同。 UIImageView 拉伸(stretch)以占据 CardView 的整个高度。因此,UILabel 被隐藏了。从我的 UINavigationBar 和 UITabBar 后面的绿色模糊来看,UIImageView 似乎垂直拉伸(stretch)超出了可见区域的范围,尽管图像甚至没有那么大。

enter image description here

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 看起来正确。

enter image description here

我有没有办法限制 UIImageView,使图像只能变高,直到空间不足以容纳其余内容?我在这里丢失了我的底部标签,因为现在图像适合 UIImageView 但将其他所有内容推到很远的地方。我宁愿它尝试填充尽可能多的水平空间,直到它下面的 sibling 不能再被进一步向下推。

我得到的,与我想要的

enter image description here enter image description here

最佳答案

选择您的图像并转到布局问题工具 > 重置为建议的约束

关于ios - 图像在约束条件下未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46509524/

相关文章:

ios - 我的背景音乐怎么了?

ios - SpriteKit : Just wondering why my script won't work properly?

ios - 如何分离输入字符串并在 TableView 中填充它重复了多少次并将索引传递给下一个

ios - UITableViewCell 中的圆形图像

ios - 在 segue 上移动图像以加载到另一个 UIImageView

ios - 在 Xcode 中, Storyboard上的所有对象现在都是不可见的,但在更新帧后仍然可以看到帧和约束

ios - Swift - 自定义 UIImageView 类

ios - 自动布局和 UIScrollView

swift - 试图获取 2 个 View 之一的 frame.height,它在 stackview 中均匀填充

ios自动布局标签定位