0

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 Answers1

0

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),
        ])
cgontijo
  • 286
  • 2
  • 7
  • I tried your code this is what I am getting in the debug area Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't add self as subview' –  Oct 26 '19 at 14:13