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

时间:2015-03-17 21:53:23

标签: ios xcode storyboard autolayout

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

enter image description here

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

enter image description here

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

enter image description here

请您解释一下这种非直观的行为,并告诉我如何将图像放在屏幕顶部,没有任何间隙 - 如上图所示。

4 个答案:

答案 0 :(得分:2)

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

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

enter image description here

答案 1 :(得分:0)

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

希望这会有所帮助。

答案 2 :(得分:0)

这似乎不容易解决:How do I autoresize an image, but at the top of the ImageView (programmatically in Xcode)?

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

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

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

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

答案 3 :(得分:0)

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