UIStackView не может установить нижнее ограничение при использовании UINavigationController

У меня есть UIView, где UIStackView - это подпредставление. Обычно он заполняет UIView. Однако, когда я встраиваю UIView в UINavigationController, UIView и UIStackView больше не доходят до нижней части экрана. Кажется, что они получают высоту, которая необходима только для размещения подпредставлений UIStackView и ничего более. Вот как выглядит код ограничений:

func setContraints() {

    readableContentGuide.topAnchor.constraint(equalTo: stackView.topAnchor, constant: 0.0).isActive = true
    readableContentGuide.bottomAnchor.constraint(equalTo: stackView.bottomAnchor, constant: 0.0).isActive = true
    readableContentGuide.leadingAnchor.constraint(equalTo: stackView.leadingAnchor, constant: 0.0).isActive = true
    readableContentGuide.trailingAnchor.constraint(equalTo: stackView.trailingAnchor, constant: 0.0).isActive = true

    stackView.topAnchor.constraint(equalTo: safeAreaLayoutGuide.topAnchor)
    stackView.bottomAnchor.constraint(equalTo: safeAreaLayoutGuide.bottomAnchor)

}

Эта строка сверху не имеет никакого эффекта:

stackView.bottomAnchor.constraint(equalTo: safeAreaLayoutGuide.bottomAnchor)

А вот как я настраиваю UINavigationController в AppDelegate:

window = UIWindow()
    let homeViewController = BeginCheckoutViewController()
    let navController  = UINavigationController(rootViewController: homeViewController)
    self.window?.rootViewController = navController
    window?.makeKeyAndVisible()

person bhartsb    schedule 26.07.2018    source источник
comment
Откуда вы звоните setConstraints?   -  person Flexicoder    schedule 28.07.2018


Ответы (1)


Подобная проблема возникла только на iPhoneX. Вы пробовали другой симулятор? Может это та же проблема.

Попробуйте использовать bottomAnchor вместо safeAreaLayoutGuide.bottomAnchor: stackView.bottomAnchor.constraint(equalTo: bottomAnchor)

На iPhoneX safeAreLayoutGuide.bottomAnchor не совпадает с bottomAnchor из-за закругленных краев (иначе может отсутствовать контент). Так что, если у вас нет UITabBar или чего-то в нижней части экрана, которое заполняет пробел, это может помочь.

person ObjectAlchemist    schedule 28.07.2018
comment
Я пробовал другой симулятор, а также работал на своем iPhone 6s. То же самое, когда я пробую то, что вы предложили. - person bhartsb; 06.08.2018