Search code examples
iosswiftautolayoutnslayoutconstraint

Swift Print Anchor Constant Value


How do you print out the value of an anchor's constant? For example:

let myButton = UIButton()
myButton.topAnchor.constraint(equalTo: view.topAnchor, constant: 5).isActive = true
myButton.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
myButton.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
myButton.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
print(myButton.topAnchor.constant)//this would print 5

Solution

  • The constant is for the constraint that you have laid out for the anchor. Anchors don't have constants. Constraints do. So what you need to do is maintain a reference of the constraint and access the constant.

    let myButtonTopAnchorConstraint = myButton.topAnchor.constraint(equalTo: view.topAnchor, constant: 5)
    myButtonTopAnchorConstraint.isActive = true
    myButton.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    myButton.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    myButton.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    
    print(myButtonTopAnchorConstraint.constant) //Prints 5
    

    A view will have only one topAnchor, but can have multiple constraints relative to that anchor.