我试图将多个元素(标签和按钮)集中在UIView(或UIStackView)中。我尝试使用中心对齐和分布填充和间距10向UIStackView添加元素,但我的元素始终从左侧定位。我试过改变中心。仍然没有运气。
我想要实现的目标:
[------- label - button -------]有2个元素。
[ - label - button - button--]有3个元素。
有没有办法在不使用垫片的情况下实现这一目标。从理论上讲,我可能会使用约束,但由于元素数量的变化,我不确定它是个好主意。
let simpleView = UIView()
simpleView.addSubview(text)
simpleView.addSubview(button)
let leftLeading = NSLayoutConstraint(item: text, attribute:
.LeadingMargin, relatedBy: .Equal, toItem: simpleView,
attribute: .LeadingMargin, multiplier: 1.0,
constant: 10)
let leftLeading2 = NSLayoutConstraint(item: button, attribute:
.LeadingMargin, relatedBy: .Equal, toItem: simpleView,
attribute: .LeadingMargin, multiplier: 1.0,
constant: 10)
simpleView.addConstraint(leftLeading)
simpleView.addConstraint(leftLeading2)
simpleView.translatesAutoresizingMaskIntoConstraints = false
simpleView.sizeToFit()
newView.addSubview(simpleView)
let horizontalConstraint = NSLayoutConstraint(item: simpleView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: newView, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0)
newView.addConstraint(horizontalConstraint)
let verticalConstraint = NSLayoutConstraint(item: simpleView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: newView, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)
newView.addConstraint(verticalConstraint)
我一定做错了,因为这是我得到的(newView是红色,按钮是蓝色,缺少文字标签):
答案 0 :(得分:0)
创建视图,将视图置于需要的中心位置。然后在该视图中,您可以插入每个元素,并为每个元素提供一个编程的NSLayoutConstraint,其中.Leading为5或者您希望元素间的任何间距。
查看[元素元素]
这个数字无关紧要。查看NSLayoutConstraints并确保使用view.addConstraints。