回答
这是少用的信息,但您可以通过编程添加约束来添加左边的空格 - x约束来到页面中间。 您也可以在小视图的两个按钮,这将使它更容易在中间
对准你可以这样做:
- 定义水平间距为您的两个按钮,让我们说10为例
- 集中心水平上左键的俯视图,并在此约束集的乘数为1/2
(不要忘了丢失的制约因素,如您的按钮和顶部之间的空间顶视图)
编辑我不建议添加无用的视图作为容器。这是不好的做法。乘数是要走的路。
- 嵌入在一个视图中的2次(在设计,只需选择两个视图,然后从Xcode的菜单中选择编辑 - >中嵌入 - >查看)
- 为了施加约束在容器视图水平居中在容器中的视图
- 最终,你可以申请一个顶部约束在容器视图本身和视图控制器的视图之间
你并不需要创建一个额外的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];
你假设他/她正在使用swift,但他/她没有说出任何关于它的信息 – ddb
你可以使用Objective-C以稍微不同的语法做完全相同的事情。 – keithbhunter
@ddb你应该看看问题编辑历史。问题标题在由Eric – Shubhank
- 1. UIButton的放置和约束
- 2. UIButton约束问题
- 3. 约束替换UIButton框架
- 4. 如何对两个组合字段设置约束?
- 5. PostgreSQL中两个唯一字段的设置约束
- 6. iOS - 设置两个子视图约束的更好方法
- 7. 设置SQL中两个字段之间的约束
- 8. 如何设置约束?
- 9. XPages DateTextBox - 设置约束
- 10. 如何设置SDP约束?
- 11. constrOptim中的设置约束
- 12. Gridlayout没有设置约束
- 13. 设置任务的约束
- 14. 正确设置PureLayout约束?
- 15. 在6个按钮上设置约束。
- 16. 联盟有两个约束?
- 17. 在CPLEX Concert Technology中设置约束的约束Java
- 18. SQLAlchemy:UNIQUE约束失败错误,但没有设置唯一约束
- 19. 在swift中添加UIButton的约束
- 20. UIButton作为子视图编程约束
- 21. 需要设置底部中心的UIButton自动布局约束使用代码
- 22. IOS设置约束的动画图标
- 23. 休眠没有设置外部约束
- 24. 在代码中设置约束
- 25. 如何动态设置UIView约束?
- 26. 如何正确设置动画约束?
- 27. 设置`constraint.isActive = false`是否解除约束?
- 28. 我是否需要设置约束?
- 29. 如何设置AVPlayerViewController的布局约束?
- 30. iOS应用程序设置包约束
使用的观点是另一种选择,我正在寻找解决方案来约束。你能告诉我这个例子,为这些按钮编程设置约束。你还需要什么信息? – nadim