Я пытаюсь программно установить свои ограничения для «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?