您可以通过编程方式创建自动布局格式字符串并向视图添加约束。
let button1 = UIButton()
button1.translatesAutoresizingMaskIntoConstraints = false
button1.setTitle("button 1", forState: UIControlState.Normal)
button1.backgroundColor = UIColor.redColor()
let button2 = UIButton()
button2.translatesAutoresizingMaskIntoConstraints = false
button2.setTitle("button 2", forState: UIControlState.Normal)
button2.backgroundColor = UIColor.redColor()
let button3 = UIButton()
button3.translatesAutoresizingMaskIntoConstraints = false
button3.setTitle("button 3", forState: UIControlState.Normal)
button3.backgroundColor = UIColor.redColor()
let buttons = [button1, button2, button3]
let spaceBeetweenButtons = NSNumber(int: 10)
let buttonWidth = NSNumber(int: 80)
let buttonHeight = NSNumber(int: 35)
let containerWidth = NSNumber(integer: (buttons.count * buttonWidth.integerValue) + (buttons.count - 1) * spaceBeetweenButtons.integerValue)
let containerView = UIView()
containerView.translatesAutoresizingMaskIntoConstraints = false
var views = [String : AnyObject]()
let metrics = ["buttonWidth" : buttonWidth, "buttonHeight" : buttonHeight, "spaceBeetweenButtons" : spaceBeetweenButtons, "containerWidth" : containerWidth]
var format = "H:|-0-"
for var i = 0; i < buttons.count; i++
{
views["button\(i)"] = buttons[i]
format += "[button\(i)(==buttonWidth)]"
if i != buttons.count - 1
{
format += "-spaceBeetweenButtons-"
}
else
{
format += "-0-|"
}
containerView.addSubview(buttons[i])
containerView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[button\(i)(==buttonHeight)]", options: NSLayoutFormatOptions.DirectionLeftToRight, metrics: metrics, views: views))
}
containerView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(format, options: NSLayoutFormatOptions.DirectionLeftToRight, metrics: metrics, views: views))
self.view.addSubview(containerView)
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[containerView(==buttonHeight)]", options: NSLayoutFormatOptions.DirectionLeftToRight, metrics: metrics, views: ["containerView" : containerView]))
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:[containerView(==containerWidth)]", options: NSLayoutFormatOptions.DirectionLeftToRight, metrics: metrics, views: ["containerView" : containerView]))
self.view.addConstraint(NSLayoutConstraint(item: containerView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1.0, constant: 0.0))
self.view.addConstraint(NSLayoutConstraint(item: containerView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1.0, constant: 0.0))
结果: