Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

iOS Introduction to Auto Layout in iOS Auto Layout in Code Constraints in Code

Sheng Wei
Sheng Wei
4,382 Points

[Help!] What is wrong with my constraint?

The bummer keeps saying that I haven't linked it to the parent view...can someone tell me what the syntax for it is? Thanks!

layout.swift
class MyViewController: UIViewController {

    let sampleView = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(sampleView)
    }

    override func viewWillLayoutSubviews() {
        super.viewWillLayoutSubviews()
        sampleView.translatesAutoresizingMaskIntoConstraints = false

        // Add constraints below
           func setUpsampleViewConstraints() { 
            sampleView.translatesAutoresizingMaskIntoConstraints = false    
            }

            let sampleViewHeightConstraint = NSLayoutConstraint(item: sampleView, attribute: .Height, relatedBy: .Equal, 
            toItem: nil, attribute: .CenterX, multiplier: 1.0, constant: 50.0)

            let sampleViewWidthConstraint = NSLayoutConstraint(item: sampleView, attribute: .Width, relatedBy: .Equal, 
            toItem: nil, attribute: .CenterX, multiplier: 1.0, constant: 50.0)

            let sampleViewCenterXConstraint = NSLayoutConstraint(item: sampleView, attribute: .CenterX, relatedBy: .Equal, 
            toItem: nil, attribute: .CenterX, multiplier: 1.0, constant: 0.0)

            view.addConstraints([
              sampleViewHeightConstraint,
              sampleViewWidthConstraint,
              sampleViewCenterXConstraint
              ])

    }
}

1 Answer

Jairo Eli de Leon
Jairo Eli de Leon
5,182 Points

Same here, I am not sure what the problem is. So I took few video lessons and then back to this challenge again but this time I created constraints using layout anchors. It worked for me!

NSLayoutConstraint.activateConstraints([
  sampleView.heightAnchor.constraintEqualToConstant(50.0),
  sampleView.widthAnchor.constraintEqualToConstant(50.0),
  sampleView.centerXAnchor.constraintEqualToAnchor(view.centerXAnchor),
  sampleView.centerYAnchor.constraintEqualToAnchor(view.centerYAnchor)
  ])