constrain self.view declared in func loadview to a partial area of the view controller

67 Views Asked by At

My code below subclass canvas for drawing propetries. I am trying to constrain canvas to a specific area in viewdidload. The problem is that func loadView is preventing the constraints in viewdidload from working. In the debugg area it states Unable to simultaneously satisfy constraints.

  var canvas = Canvas()

 override func loadView() {
         self.view = canvas


}

override func viewDidLoad() {
    super.viewDidLoad()

    canvas.translatesAutoresizingMaskIntoConstraints = false

    NSLayoutConstraint.activate ([
               canvas.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :37.5),
               canvas.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 225),
               canvas.widthAnchor.constraint(equalToConstant: 75),
               canvas.heightAnchor.constraint(equalToConstant: 50),
    ])

}

class Canvas: UIView {}
1

There are 1 best solutions below

1
cgontijo On

Are you adding canvas as sub-view of view? You need to do that before setting the constraints:

        canvas.translatesAutoresizingMaskIntoConstraints = false

        self.view.addSubview(canvas)

        NSLayoutConstraint.activate ([
                   canvas.trailingAnchor.constraint(equalTo: view.centerXAnchor, constant :37.5),
                   canvas.topAnchor.constraint(equalTo: view.centerYAnchor, constant : 225),
                   canvas.widthAnchor.constraint(equalToConstant: 75),
                   canvas.heightAnchor.constraint(equalToConstant: 50),
        ])