Недавно я начал использовать Swift и Xcode, и я не уверен, почему нижнее ограничение для основного представления в моем viewcontroller смещено вверх для устройств iOS 10, тогда как на iOS11 оно работает правильно.
У меня было что-то похожее на другое приложение, в котором ограничение вида сверху было смещено для iOS10, но мне удалось исправить это, переопределив viewDidLayoutSubviews() и сбросив ограничения для устройств ниже 11.
К сожалению, на этот раз уловка, похоже, не сработает. Если я отменяю нижнее ограничение, нижний якорь исправляется, но верхний подтягивается, и часть представления скрывается панелью навигации. Я пытался найти решение с помощью предыдущих вопросов (большинство из них были для верхнего зазора, и мне не удалось изменить их, чтобы они работали для нижнего зазора, который я получаю) и Google, но не повезло.
Для ясности я приложил скриншот проблемы. iOS11 слева, iOS10 справа.
Я пробовал переопределить:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let margins = view.layoutMarginsGuide
NSLayoutConstraint.activate([
graphView.leadingAnchor.constraint(equalTo: margins.leadingAnchor),
graphView.trailingAnchor.constraint(equalTo: margins.trailingAnchor)
])
if #available(iOS 11, *) {
// safe area constraints already set
} else {
let standardSpacing: CGFloat = 0.0
NSLayoutConstraint.activate([
contentView.bottomAnchor.constraint(equalTo: bottomLayoutGuide.bottomAnchor, constant: standardSpacing)])
}
И результат:





Я положил их в безопасную зону. Привязка верхнего пространства к супервизору не помогла