iOS 自动布局 - 图像和屏幕顶部之间的间隙,尽管设置了限制

iOS autolayout - gap between image and top of the screen, despite constraints set

我有一张图片想放在屏幕的顶部。我已将其模式设置为宽高比,因为我想保留原始比例。我还将左、上和右约束设置为 0:

尽管顶部约束设置为 0,但图像和屏幕顶部之间有很多空白 space,这绝对不是我想要的:

只有当我将最高约束设置为大约“-100”时,我才会得到类似于我想要实现的结果:

能否请您解释一下这种不直观的行为,并告诉我应该如何将图像无间隙地放置在屏幕顶部 - 如上图所示。

正如我从您的屏幕截图中看到的,您的图像框架比图像内容大得多。如果您想要该框架,请考虑将 Aspect Fill 设置为图像模式。否则你应该设置以下约束:

希望这会有所帮助。

看来这不是那么容易解决:How do I autoresize an image, but at the top of the ImageView (programmatically in Xcode)?

问题是您确实需要同时填充纵横比和顶部。

我的建议是采用您的 UIImageView 并为纵横比以及您已有的内容添加约束。然后按住 Ctrl 键将此约束拖到视图控制器的 .h 文件中并创建一个 IBOutlet。

这为您提供了一个 IBOutlet,您可以在代码中使用它来调整 UIImageView 的纵横比。

当您在代码中加载图像时,检查图像并计算其纵横比。设置约束 IBOutlet 常量以匹配。然后,这应该会强制 UIImageView 将自己的宽高比与图像对齐,然后约束应该将其全部拉到位。

如果您仍然遇到此问题,这值得一试。

点击您的 ViewController,然后取消选中以下属性。看看是否能解决问题。

经过一些尝试,我想出了一个错误,是我最初想要的 99%。左、上和右约束必须设置为 0,宽高比约束也必须启用。在 "Scale to fill" 模式之上。除了您必须自己计算正确的图像比率这一事实之外,这非常有效。