ограничить self.view, объявленный в функции loadview, частичной областью контроллера представления - PullRequest
0 голосов
/ 26 октября 2019

Мой код ниже подкласса холст для рисования пропетрии. Я пытаюсь ограничить холст определенной области в viewdidload. Проблема в том, что func loadView предотвращает работу ограничений в viewdidload. В области отладки он сообщает о невозможности одновременно удовлетворить ограничения.

  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 Ответ

0 голосов
/ 26 октября 2019

Вы добавляете canvas в качестве под-представления view ? Это необходимо сделать перед установкой ограничений:

        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),
        ])
...