iOS自动布局 – 尽管设置了约束,但图像与屏幕顶部之间存在差距

我有一个图像,我想放在屏幕的顶部。 我已将其模式设置为纵横比较,因为我想保留原始比率。 我还将左,上和右约束设置为0:

在此处输入图像描述

尽管顶部约束设置为0,但是在图像和屏幕顶部之间存在大量空白空间,这绝对不是我想要的:

在此处输入图像描述

只有当我将顶部约束设置为大约“-100”时,才会得到类似于我想要实现的东西:

在此处输入图像描述

能否请您解释一下这种非直观的行为,并告诉我如何将图像放在屏幕顶部而没有任何间隙 – 就像上面的图像一样。

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

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

在此处输入图像描述

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

希望这会有所帮助。

看起来这并不容易解决: 我如何自动调整图像,但是在ImageView的顶部(以编程方式在Xcode中)?

问题是你真的想要方面填充和顶部同时。

我的建议是采用你的UIImageView并为宽高比添加一个cosnstraint以及你已经拥有的。 然后按住Ctrl键并从此约束拖动到视图控制器的.h文件中,并创建一个IBOutlet。

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

在代码中加载图像时,请检查图像并计算其纵横比。 将约束IBOutlet设置为常量以匹配。 然后,这应该强制UIImageView将自身的方面明确地与图像对齐,然后约束应该将它全部拉到位。

经过一些试验后我得出的错误是我原本想要的99%。 左,上和右约束必须设置为0,还必须启用宽高比约束。 在“缩放到填充”模式之上。 除了你必须自己计算正确的图像比率这一事实之外,这也很有效。