【发布时间】:2017-10-03 15:46:00
【问题描述】:
我正在尝试将 2 个或更多 UIViews 在 UIView 中水平居中,例如
| [UIView1] [UIView2] |
| [UIView1] [UIView2] [UIView3] |
或
| [UIView1] [UIView2] [UIView3] [UIView4] |
我将这些约束添加到容器视图内的所有视图中
let horizontalConstraint = NSLayoutConstraint(item: views[N], attribute: .centerX, relatedBy: .equal, toItem: container, attribute: .centerX, multiplier: 1, constant: 0)
let verticalConstraint = NSLayoutConstraint(item: views[N], attribute: .bottom, relatedBy: .equal, toItem: container, attribute: .centerY, multiplier: 1, constant: 0)
let widthConstraint = NSLayoutConstraint(item: views[N], attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: width)
let heightConstraint = NSLayoutConstraint(item: views[N], attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1, constant: height)
我在每个视图之间添加间距约束
let spacingConstraint = NSLayoutConstraint(item: views[N], attribute: .left, relatedBy: .equal, toItem: views[N+1], attribute: .right, multiplier: 1, constant: 10)
上述约束将所有视图水平居中。
如果我将horizontalConstraint 的优先级更改为 750,那么我会得到类似的结果
如您所见,当我有奇数个视图时,这些视图将正确水平对齐,但当有偶数个视图时,情况并非如此。
如何在不使用另一个容器或间隔视图的情况下以编程方式将任意偶数个视图和另一个视图水平居中?
【问题讨论】:
-
我不知道您是否决定完全以编程方式编写约束,如果您使用堆栈视图,它将轻松满足您的要求。
-
您能否提供和示例使用以编程方式完成的堆栈视图可以解决我的问题?
标签: ios swift uiview autolayout