Смещение uiView внутри ViewController для iOS10, но не для iOS11 - PullRequest
0 голосов
/ 02 мая 2018

Я недавно начал использовать Swift и Xcode, и я не уверен, почему нижнее ограничение для основного вида в моем viewcontroller сдвинуто вверх для устройств iOS 10, тогда как оно корректно работает на iOS11. У меня было что-то похожее на другое приложение, в котором ограничение вида сверху было смещено для iOS10, но мне удалось это исправить, переопределив viewDidLayoutSubviews() и сбросив ограничения для устройств ниже 11.

К сожалению, на этот раз уловка не работает. Если я переопределяю нижнее ограничение, нижний якорь исправляется, но верхний привязывается вверх, а часть вида скрывается панелью навигации. Я пытался найти решение с помощью предыдущих вопросов (большинство из них были для верхнего пробела, и мне не удалось изменить их, чтобы они работали для получаемого нижнего разрыва) и Google, но не повезло.

Я приложил скриншот проблемы для ясности. iOS11 слева, iOS10 справа.

iOS10 bottom gap

Переопределение, которое я пробовал:

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)])
    }

И результат:

failed attempt

1 Ответ

0 голосов
/ 02 мая 2018

Вам необходимо установить эти 4 ограничения для вашего основного вида

enter image description here

...