将UIButton分组为图层和水平居中

时间:2016-03-15 23:25:52

标签: ios swift autolayout constraints nslayoutconstraint

我在屏幕上有2个按钮,我以编程方式创建和放置。

let myButton1 = UIButton()
let myButton2 = UIButton()

let myButton1Frame = CGRectMake(anotherField.origin.x + 20, anotherField.origin.y + 80, 30, 30)
myButton1.frame = myButton1Frame

var myButton2Frame = myButton1Frame
myButton2Frame.origin.x += 130 
myButton2.frame = myButton2Frame

self.view.addSubview(myButton1)
self.view.addSubview(myButton2)

我试图通过视觉实现......

|        AnotherField      |
|                          |
|     myBtn1     myBtn2    |

我试图实现的目标在模拟器上运行正常,但我相信使用约束可以实现更好的方法。

我想如果我可以设法对myButton1myButton2进行分组,我可以将+y原点归于该群组,然后通过给予他们一段距离{{1}来水平居中按钮彼此(我的意思是,两个按钮之间的距离 - 希望这是有道理的)

这样做的正确方法是什么?或者有更好的方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

我的建议是,您将两个按钮放入容器视图中,并将该容器置于超级视图中。

所以它看起来像这样:

+--------------------------------+
|+--------------++--------------+|
||   Button1    ||    Button 2  ||
|+--------------++--------------+|
+--------------------------------+

因此,您需要完成以下步骤:

  • 添加包含按钮的视图容器("按钮容器")
  • 将两个按钮添加到上述容器中
  • 从按钮向封闭容器视图添加完全令人满意的约束。
  • 从容器视图添加水平中心约束 超级视图(例如你的控制器视图)。

您在问号标签中指定了自动布局和布局限制,因此我假设您使用自动布局(您的代码不会使用自动布局或约束,这就是我提出这个问题的原因)。

约束(如果在按钮和容器视图之间正确设置)应正确调整容器视图的大小,并且一旦容器视图完成布局,容器的超级视图的水平约束也将起作用,有效地集中容器,因此也是两个按钮。

我希望能让事情变得清晰,如果您需要进一步的帮助或者某些事情仍然不清楚,请告诉我。