Как программно добавить Autolayout constraints

Используя классический способ

override func viewDidLoad() {
    super.viewDidLoad()

    let newView = UIView()
    newView.backgroundColor = UIColor.redColor()
    newView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(newView)

    let horizontalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0)
    view.addConstraint(horizontalConstraint)

    let verticalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)
    view.addConstraint(verticalConstraint)

    let widthConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 100)
    newView.addConstraint(widthConstraint)
    // view.addConstraint(widthConstraint) // работает аналогично

    let heightConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 100)
    newView.addConstraint(heightConstraint)
    // view.addConstraint(heightConstraint) // работает аналогично
}

Используя смешанный способ(Классический + Visual Format Language)

override func viewDidLoad() {
    super.viewDidLoad()

    let newView = UIView()
    newView.backgroundColor = UIColor.redColor()
    newView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(newView)

    let horizontalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0)
    view.addConstraint(horizontalConstraint)

    let verticalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)
    view.addConstraint(verticalConstraint)

    let views = ["newView": newView]

    let widthConstraints = NSLayoutConstraint.constraintsWithVisualFormat("H:[newView(100)]", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
    newView.addConstraints(widthConstraints)
    // view.addConstraints(widthConstraints) // работает аналогично

    let heightConstraints = NSLayoutConstraint.constraintsWithVisualFormat("V:[newView(100)]", options: NSLayoutFormatOptions(rawValue: 0), metrics: nil, views: views)
    newView.addConstraints(heightConstraints)
    // view.addConstraints(heightConstraints) // работает аналогично

}

Используя только Visual Format Language

override func viewDidLoad() {
    super.viewDidLoad()

    let newView = UIView()
    newView.backgroundColor = UIColor.redColor()
    newView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(newView)

    let views = ["view": view, "newView": newView]
    let horizontalConstraints = NSLayoutConstraint.constraintsWithVisualFormat("H:[view]-(<=0)-[newView(100)]", options: NSLayoutFormatOptions.AlignAllCenterY, metrics: nil, views: views)
    view.addConstraints(horizontalConstraints)
    let verticalConstraints = NSLayoutConstraint.constraintsWithVisualFormat("V:[view]-(<=0)-[newView(100)]", options: NSLayoutFormatOptions.AlignAllCenterX, metrics: nil, views: views)
    view.addConstraints(verticalConstraints)
}

Используя Autoresizing mask

override func viewDidLoad() {
    super.viewDidLoad()

    let newView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 100.0))
    newView.backgroundColor = UIColor.redColor()

    newView.translatesAutoresizingMaskIntoConstraints = true

    newView.center = CGPointMake(view.bounds.midX, view.bounds.midY)
    newView.autoresizingMask = [UIViewAutoresizing.FlexibleLeftMargin, UIViewAutoresizing.FlexibleRightMargin, UIViewAutoresizing.FlexibleTopMargin, UIViewAutoresizing.FlexibleBottomMargin]

    view.addSubview(newView)
}

Используя Anchor(только для iOS 9)

override func viewDidLoad() {
    super.viewDidLoad()

    let newView = UIView()
    newView.backgroundColor = UIColor.redColor()
    newView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(newView)

    let horizontalConstraint = newView.centerXAnchor.constraintEqualToAnchor(view.centerXAnchor)
    let vertivalConstraint = newView.centerYAnchor.constraintEqualToAnchor(view.centerYAnchor)
    let widthConstraint = newView.widthAnchor.constraintEqualToAnchor(nil, constant: 100)
    let heightConstraint = newView.heightAnchor.constraintEqualToAnchor(nil, constant: 100)
    NSLayoutConstraint.activateConstraints([horizontalConstraint, vertivalConstraint, widthConstraint, heightConstraint])
}

Используя SnapKit(сторонее ПО)

override func viewDidLoad() {
    super.viewDidLoad()
    
    let newView = UIView()
    newView.backgroundColor = UIColor.redColor()
    view.addSubview(newView)
    
    newView.snp_makeConstraints { (make) -> Void in
        make.centerX.equalTo(view)
        make.centerY.equalTo(view)
        make.width.equalTo(100)
        make.height.equalTo(100)
    }
}

В этом случае не требуется ни newView.translatesAutoresizingMaskIntoConstraints = false, ни активация constraints.

Используя Cartography(стороннее ПО)

override func viewDidLoad() {
    super.viewDidLoad()
    
    let newView = UIView()
    newView.backgroundColor = UIColor.redColor()
    view.addSubview(newView)
    
    constrain(newView, view) { (newView, view) -> () in
        newView.centerX == view.centerX
        newView.centerY == view.centerY
        newView.width == 100
        newView.height == 100
    }
}

Данная библиотека использует декларативный стиль программирования, т.е она описывает каков объект, а не как его отображать.

P.S Представленный код работает для swift 2.