2016-07-06 124 views
3

我无法设置两个按钮相邻的约束。我需要UIView中间的这两个按钮。见下图enter image description here设置两个UIButton约束?

可以知道如何设置这些按钮的约束吗?

回答

0

这是少用的信息,但您可以通过编程添加约束来添加左边的空格 - x约束来到页面中间。 您也可以在小视图的两个按钮,这将使它更容易在中间

+0

使用的观点是另一种选择,我正在寻找解决方案来约束。你能告诉我这个例子,为这些按钮编程设置约束。你还需要什么信息? – nadim

1

对准你可以这样做:

  • 定义水平间距为您的两个按钮,让我们说10为例
  • 集中心水平上左键的俯视图,并在此约束集的乘数为1/2

(不要忘了丢失的制约因素,如您的按钮和顶部之间的空间顶视图)

编辑我不建议添加无用的视图作为容器。这是不好的做法。乘数是要走的路。

1
  1. 嵌入在一个视图中的2次(在设计,只需选择两个视图,然后从Xcode的菜单中选择编辑 - >中嵌入 - >查看)
  2. 为了施加约束在容器视图水平居中在容器中的视图
  3. 最终,你可以申请一个顶部约束在容器视图本身和视图控制器的视图之间
2

你并不需要创建一个额外的UIView解决这个问题!

UILayoutGuide文档:

有许多与加入伪意见,您的视图层次结构相关的成本。首先,创建和维护视图本身的成本。其次,虚拟视图是视图层次结构的完整成员,这意味着它会为层次结构执行的每个任务增加开销。最糟糕的是,不可见虚拟视图可以拦截用于其他视图的消息,导致很难找到的问题。

您可以使用UILayoutGuide s来做到这一点;而不是将按钮添加到不必要的UIView中。您在按钮的左侧和右侧放置一个UILayoutGuide,并将它们的宽度设置为相等。这将按钮居中。这里是如何做到这一点的代码:

view.addSubview(button1) 
view.addSubview(button2) 

let leftSpace = UILayoutGuide() 
view.addLayoutGuide(leftSpace) 

let rightSpace = UILayoutGuide() 
view.addLayoutGuide(rightSpace) 

let views = [ 
    "leftSpace" : leftSpace, 
    "button1" : button1, 
    "button2" : button2, 
    "rightSpace" : rightSpace 
] 

NSLayoutConstraint.activateConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[leftSpace][button1]-[button2][rightSpace]|", options: [], metrics: nil, views: views)) 
leftSpace.widthAnchor.constraintEqualToAnchor(rightSpace.widthAnchor).active = true 

我已经离开了垂直约束,因为你只关心水平居中他们,但你需要垂直约束。我相信类似的东西也可以在故事板中完成。

编辑Objective-C的

[self.view addSubview:button1]; 
[self.view addSubview:button2]; 

UILayoutGuide *leftSpace = [[UILayoutGuide alloc] init]; 
[self.view addLayoutGuide:leftSpace]; 

UILayoutGuide *rightSpace = [[UILayoutGuide alloc] init]; 
[self.view addLayoutGuide:rightSpace]; 

NSDictionary* views = @{ 
         @"leftSpace" : leftSpace, 
         @"button1" : button1, 
         @"button2" : button2, 
         @"rightSpace" : rightSpace 
         }; 

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[leftSpace][button1]-[button2][rightSpace]|" options:0 metrics:nil views:views]]; 

[[leftSpace.widthAnchor constraintEqualToAnchor:rightSpace.widthAnchor] setActive:YES]; 
+0

你假设他/她正在使用swift,但他/她没有说出任何关于它的信息 – ddb

+0

你可以使用Objective-C以稍微不同的语法做完全相同的事情。 – keithbhunter

+0

@ddb你应该看看问题编辑历史。问题标题在由Eric – Shubhank

3

这里我已经设置了约束为同:

1)嵌入你的UIView的&按钮设置该视图的约束。 enter image description here

2),用于第一按钮 enter image description here

3)设置的约束为第二按钮 enter image description here

1

选择两个按钮和在UIView的嵌入这两个按钮设置约束, embed UIView
水平居中对齐UIView, 为UIView设置宽度,高度和顶部约束。

你会得到这样的:

enter image description here

Sample project for this