如何在UIView中居中多个元素

时间:2016-08-08 21:10:52

标签: swift xcode uiview uistackview

我试图将多个元素(标签和按钮)集中在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是红色,按钮是蓝色,缺少文字标签):

enter image description here

1 个答案:

答案 0 :(得分:0)

创建视图,将视图置于需要的中心位置。然后在该视图中,您可以插入每个元素,并为每个元素提供一个编程的NSLayoutConstraint,其中.Leading为5或者您希望元素间的任何间距。

查看[元素元素]

这个数字无关紧要。查看NSLayoutConstraints并确保使用view.addConstraints。