capturesteve capturesteve - 1 year ago 132
iOS Question

How to properly activate constraints in swift

I am trying to programmatically add a button view object to my scene for an iOS app written in swift. I am trying to follow the answer here

But I cannot see the button on the scene. I call this method from my viewDidLoad method.

func buildLoginButton() -> UIButton
let button = UIButton()
button.backgroundColor = .greenColor()
button.setTitle("Test Button", forState: .Normal)

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

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

button.widthAnchor.constraintEqualToAnchor(nil, constant: 200).active = true
button.heightAnchor.constraintEqualToAnchor(nil, constant: 100).active = true

NSLayoutConstraint.activateConstraints([c1, c2])

return button

Answer Source
let button = UIButton()

Stop! You forgot to say this:

button.translatesAutoresizingMaskIntoConstraints = false`

You must say this on any view that you create, put into the interface, and try to apply constraints to.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download