Программно установить ограничения для safeAreaLayoutGuide в UIView - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь программно установить свои ограничения для «safeAreaLayoutGuide», но похоже, что safeArea недоступно в методе «init» UIView.

required init(foo: foo) 
{
    super.init(frame: .zero)

    self.addSubview(contentView)

    var layoutGuide: UILayoutGuide = self.layoutMarginsGuide
    if #available(iOS 11, *) {
        layoutGuide = self.safeAreaLayoutGuide
    }

    NSLayoutConstraint.activate([
        contentView.topAnchor.constraint(equalTo: layoutGuide.topAnchor),
        contentView.rightAnchor.constraint(equalTo: layoutGuide.rightAnchor),
        contentView.leftAnchor.constraint(equalTo: layoutGuide.leftAnchor),
        contentView.bottomAnchor.constraint(equalTo: layoutGuide.bottomAnchor)
    ])

    self.layoutIfNeeded()
}

Поэтому, когда эти ограниченияустановлено, что кадр "layoutGuide" равен {{0, 0}, {0, 0}}, поэтому ясно, что здесь что-то не так (разве что на уровне ниже iOS 11).

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

Где / когда я должен установить свои ограничения для UIView?

1 Ответ

0 голосов
/ 26 июня 2019

Вы можете настроить вид внутри viewDidLoad метода вместо init

...