Как центрировать вид по оси X с помощью автоматического размещения в Swift на MacOS? - PullRequest
0 голосов
/ 31 марта 2020

Привет. Я просто хочу, чтобы childView был центрирован по оси x для NSViewController view с использованием автоматического макета. Я делаю следующее:

override func viewWillAppear()
{
    super.viewWillAppear()

    let childView = PagesView.init(frame: CGRect(x: 0, y: 0, width:100, height: 100))
    childView.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(childView)

    childView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
}

childView даже не появляется на экране. Когда я удаляю последнюю строку, она позиционируется на 0,0. Так что-то в этой последней строке вызывает это go haywire, и я не уверен, почему? Я использовал ту же самую логику c на iOS, и она отлично работала.

1 Ответ

1 голос
/ 31 марта 2020

Все представления должны иметь ограничения для определения его местоположения и размера.

// This would create dimension constraints if your class cannot already infer them
childView.widthAnchor.constraint(equalToConstant: 100).isActive = true
childView.heightAnchor.constraint(equalToConstant: 100).isActive = true

Вам также необходимо указать ограничение вертикальной привязки, чтобы в представлении было достаточно информации для отображения.

childView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
...