Программно созданный UIViewController, частично скрытый панелью навигации - PullRequest
0 голосов
/ 12 октября 2019

У меня есть подкласс UIViewController, который я создаю программно, без Interface Builder. Класс называется ColorController, так как он редактирует цвет. Когда я добавляю его во всплывающее окно внутри UINavigationController, его содержимое скрывается под панелью навигации. Раньше этого не происходило, когда ColorController было извлечено из файла раскадровки IB.

Есть ли какое-либо свойство или метод, который я должен переопределить в своем ColorController, чтобы указать ему корректировать свои границы при навигацииконтроллер?

Прямо сейчас все, что я делаю, это создаю мой root UIView (a ColorPicker) и устанавливаю его как self.view в loadView().

class ColorController: UIViewController {

    private let colorPicker: ColorPicker       

    init() {
        colorPicker = ColorPicker()
    }

    override func loadView() {
        self.view = colorPicker
    }

enter image description here

1 Ответ

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

Не переопределяйте loadView, переопределяйте viewDidLoad и добавляйте colorPicker self.view

Используйте SnapKit

colorPicker.snp.makeConstraints { (make) -> Void in
    make.leading.trailing.bottom.equalTo(0)
    make.top.equalTo(self.topLayoutGuide.snp.bottom);
}

Используйте iOS UIKit

colorPicker.translatesAutoresizingMaskIntoConstraints = false

var constraints = [NSLayoutConstraint(item: colorPicker, attribute: .leading, relatedBy: .equal, toItem: self.view, attribute: .leading, multiplier: 1, constant: 0),
                           NSLayoutConstraint(item: colorPicker, attribute: .bottom, relatedBy: .equal, toItem: self.view, attribute: .bottom, multiplier: 1, constant: 0),
                           NSLayoutConstraint(item: colorPicker, attribute: .trailing, relatedBy: .equal, toItem: self.view, attribute: .trailing, multiplier: 1, constant: 0)]

if #available(iOS 11.0, *) {
    constraints.append(NSLayoutConstraint(item: colorPicker, attribute: .top, relatedBy: .equal, toItem: self.view.safeAreaLayoutGuide, attribute: .top, multiplier: 1, constant: 0))
} else {
    constraints.append(NSLayoutConstraint(item: colorPicker, attribute: .top, relatedBy: .equal, toItem: self.topLayoutGuide, attribute: .bottom, multiplier: 1, constant: 0))
}
self.view.addConstraints(constraints)
...