When programmatically creating layouts, I follow Apple\'s advice: override -updateConstraints, add custom constraints, and call -setNeedsUpdateConstraints once subviews have
This kind of tracking could be done too, for the initial setup. In most cases.
override func updateConstraints() {
if constraints.count == 0 {
let views = ["textField": textField]
addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[textField]-0-|", options: [], metrics: nil, views: views))
addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[textField]-0-|", options: [], metrics: nil, views: views))
}
super.updateConstraints()
}