解决Adpative和流体布局问题

时间:2017-01-02 12:46:55

标签: autolayout interface-builder xcode8 ios-autolayout

通过我的应用程序,我注意到在iPhone SE的不同设备之间> iPhone 7+似乎有额外的空白区域,我应用了AutoLayout规则。

最好的例子是我欢迎屏幕上的图像视图,如下图所示。随着设备变大,朝向底部的空间变大,为了解决这个问题,我正在尝试做的是将图像向下推以适应额外的空间。

enter image description here

要解决这个问题,我试图做的是应用一个不等式约束,如果可能的话,会增加图像视图顶部的空间超过45个,但我似乎得到一个不等式约束错误,如下所示

enter image description here

我尝试过的另一种方法是添加优先级约束,并将其与不等式约束结合起来,您可以在下图中看到,但这对我的图像在大型设备上的推送没有影响那里有更多的空间。

enter image description here

解决此类问题的最佳方法是什么?是否有任何有用的链接或教程可以帮助我更好地了解此问题?

2 个答案:

答案 0 :(得分:1)

问题在于约束是不明确的 - 您的顶部约束是说图像顶部必须大于或等于顶部布局指南的偏移量。有无数个可能的值可以满足这个要求。自动布局需要约束来解析为单个值,以便它确切地知道需要放置的位置。

当存在多个约束给出相同元素的结果时,优先级用于指示要采用的值 - 例如,如果有两个约束指定图像的最高值,优先级将允许自动布局决定使用哪一个。

要让您的布局适应不同的屏幕高度,您可以尝试删除顶部约束,而是垂直对齐图像,使其与父视图的中心Y'偏移,即。类似的东西:

enter image description here

或者您可以将所有元素放在包装器视图中,并将该视图与主视图的中心X和中心Y对齐(假设您希望它居中,如果不添加偏移量)。

希望这有意义,并且有所帮助!

答案 1 :(得分:0)

这就是我只使用SnapKit的原因。

Interface Builder可行,但管理起来非常痛苦。如果您有错误,在发现错误之前,您将点击并指向并点击并指向数百次。你最终必须非常自律,因为很容易在IB中创造一大堆限制。无论何时需要更多控制,您仍然必须以编程方式修改约束。

不要让你的生活变得艰难。使用SnapKit,永远不要回头。它是免费的,开源的等等