Я недавно начал использовать 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)])
}
И результат: