Xcode自动布局和自适应设计

时间:2015-05-01 13:39:35

标签: ios xcode autolayout

我过去曾经使用过自动布局,但从来没有真正需要根据屏幕尺寸调整元素间距的设计,而且我对如何执行此操作的约束感到迷茫。

这就是我的元素的布局方式:

Storyboard

以下是它在预览中的外观:

Preview

正如您所看到的,它在2个较大的屏幕上看起来很好,但一旦达到4英寸,2个链接就会叠加在一起。顺便设置的方式是从登录标签到忘记密码?链接是基于顶部布局指南,还没有帐户?标签注册通过Facebook按钮基于底部布局指南。

无论如何,我可以在所有设备上获得相同(或至少接近)的间距吗?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

使用允许变量定位的约束(例如≤,和≥)。

  1. 将它设置为"忘记密码?"并且"还没有帐户?"必须大于或等于(≥)您想要分隔2个标签的最小距离(100像素)。
  2. 接下来,在"登录"之间设置约束。按钮和"忘记密码?必须小于或等于它们之间的当前距离(60像素)。
  3. 使用"注册"做同样的事情。按钮和"还没有帐户?"。使它们之间的距离小于或等于它们之间的当前距离(60像素)。
  4. 要创建这样的变量约束,创建一个等于约束的法线,然后转到界面构建器中右侧实用程序侧栏的约束选项卡。单击刚刚创建的约束并想要更改为变量约束,然后单击"编辑"。您可以在"常量"。

    旁边的下拉菜单中更改约束类型

    Editing constraints.

    如果您还有其他问题,请随时提出。

答案 1 :(得分:0)

我有同样的问题, 但是我已经提到了稍微不同的方法。我使用以下代码并根据设置坐标获取屏幕大小。

 CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height==480){
   //give coordinates and size for iPhone 4
  }
 else if (screenBounds.size.height==568){
  //give coordinates and size for iPhone 5 and 5s
   }
else {
   //give coordinates and size for iPhone 6
}    

希望这会对你有所帮助