2014-09-02 127 views
-1

我正在创建一个通用的应用程序。现在我想在屏幕上放置两个按钮:Autolayout设计适应iPhone 3.5英寸和iPhone 4英寸屏幕尺寸

Placement of two buttons

我用自动布局尝试过和Interface Builder(iOS版设计完全相同),但我只设法适合在一个屏幕尺寸的按钮(如3.5英寸显示屏)。因此,我将按钮的大小和间距设置为顶部(一个位于超级视图顶部,另一个位于顶部按钮底部)。

但是有没有一种方法适应屏幕尺寸?例如。按钮的宽度是视图宽度减去一定的差距。或者像图片中的按钮居中(一个会很容易)?这可能吗?

比其他选择是做代码中的一切(创建按钮并创建约束)。在这里,我可以查询视图宽度等,以相应地创建我的按钮。这是唯一的方法吗?

如何管理?

编辑:

现在我放置视图控制器上的空白标签。在这个标签我增加了以下约束:

  • 居中y以:上海华,等于:0
  • 居中X到:上海华,等于:0

在我的按键我设置固定的高度和宽度。比superview的尾部空间等于50(水平对中作品,因为两个屏幕尺寸具有相同的宽度)。在顶部的按钮具有以下限制:

  • 居中y以:不干胶标签,等于:20

底部的按钮获得:

  • 顶层空间到:不干胶标签,等于:20

不知道为什么它需要不同的约束,但在GUI编辑器中,我采用了按钮的底部或顶部点。在这里,标签也得到:

  • 居中y以:顶部的按钮,等于:20
  • 顶层空间到:底部按钮,等于:20

现在我有两个按钮centerd上屏幕不管3.5或4英寸显示。一个缺点是在3.5英寸显示屏上与导航控制器和工具栏的距离非常小。在这里,我可以使按钮变小。任何其他的选择吗?最初的想法是总是将空间设置为顶部元素,但是在4英寸的屏幕上,底部的空间比底部多得多。

回答

1

autolayout基于四个参数,x,y,w,h。了解这一点,动态布局的关键是了解满足所有四个约束条件所需的最少约束条件。

在您的绘图中,我们可以通过“容器中的水平中心”来解决两个按钮的x坐标。

w(宽度)可以是固定的(即300),也可以是推断的(如果按钮从前缘10离开,10从后缘向右),则宽度为300 ...)

现在我们来到Y坐标和H(高度)。你有几个选项。限制高度,然后相应地设置Y. (即将高度锁定到60,并且例如从顶部/底部到40的距离 - 您的实际值会有所不同......我在WWDC上看到的苹果工程师的另一个技巧是在中心插入空白视图,然后根据它设置按钮的约束条件

希望这增加了一点洞察力,并且不会让您更加迷惑.Autolayout很奇怪,并且记住,在ios8中我们还会考虑sizeClasses。 ;(

enter image description here

+0

“集装箱水平中心”:?我把上的按钮在中间的视图难道你的意思是“推断”:你如何设置这样的限制,我只能设定“宽度等于”是一个固定的宽度或我可以将按钮1的宽度设置为与按钮2相同。 “高度”:我想要一个等距布局。为3.5英寸显示器设置顶部不同于4英寸。但我会尝试用空洞的视角来获得更好的Y位置。 – testing 2014-09-03 10:21:53

+0

我添加了一张图片,显示空的uiview是如何工作的。 – timothykc 2014-09-03 14:57:13

+0

最后,我采取了你的方法。我想我可以根据屏幕大小改变按钮的Y坐标,以便在4英寸的屏幕上按钮和UIView之间的间距更高。但我只能使用空的UIView或将其钉在顶部/底部。 – testing 2014-09-17 19:50:47