Неправильная NSLayoutConstraint вызывает черный экран - PullRequest
0 голосов
/ 04 июля 2018

Я хочу разместить заголовок в верхней части экрана с помощью NSLayoutConstraint (я должен использовать NSLayoutConstraint). Когда я делаю это, как в коде ниже, просмотр мест поврежден где-то еще, а также цвет фона контроллеров становится черным, и ничего не работает. Где я делаю не так?

Я искал ниже сообщения, чтобы не открывать повторяющиеся сообщения, но ничего не исправило:

Программно создавать ограничения, связанные с просмотром полей контроллера

Программно добавить ограничения CenterX / CenterY

РЕДАКТИРОВАТЬ: Этот контроллер находится внутри контроллера навигации, но я не уверен, если это связано.

override func viewDidLoad(){
    self.view.backgroundColor = UIColor.white

    boxView.backgroundColor = Color.Common.welcomeScreenBackgroundColor.withAlphaComponent(0.5)
    boxView.translatesAutoresizingMaskIntoConstraints = false
    self.view.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubView(boxView)
}
override func viewDidLayoutSubviews() {

//Header = 20 from left edge of screen
let cn1 = NSLayoutConstraint(item: boxView, attribute: .leading, relatedBy: .equal, toItem: self.view, attribute: .leading, multiplier: 1.0, constant: 0)
//Header view trailing end is 20 px from right edge of the screen
let cn2 = NSLayoutConstraint(item: boxView, attribute: .trailing, relatedBy: .equal, toItem: self.view, attribute: .trailing, multiplier: 1.0, constant: 0)
//Header view height = constant 240
let cn3 = NSLayoutConstraint(item: boxView, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant:240)
//Header view vertical padding from the top edge of the screen = 20
let cn5 = NSLayoutConstraint(item: boxView, attribute: .top, relatedBy: .equal, toItem: self.topLayoutGuide, attribute: .bottom, multiplier: 1.0, constant: 0)

self.view.addConstraints([cn1,cn2,cn3,cn5])
}

1 Ответ

0 голосов
/ 04 июля 2018

Проблема была в установке translatesAutoresizingMaskIntoConstraints на false на Superview. Поэтому я удалил;

self.view.translatesAutoresizingMaskIntoConstraints = false

и это решает проблему. Я думаю, что это вызывает приложение создает ограничение для суперпредставления.

...