Использование TopLayoutGuide вместо SafeAreaInset на iOS до 11 - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь разместить UILabel под навигационной панелью и сдвинуть содержимое viewController в зависимости от высоты UILabel.

enter image description here

Я использую AdditionalSafeAreaInsets для устройств> iOS 11, которая в большинстве случаев работает, но откат для предварительной iOS 11, похоже, неРабота.Содержимое помещается под меткой (iOS 9):

enter image description here

Код вызывается в viewDidLoad для containerViewController.Я использую XCode 10.1 с xibs.

        if let _ = someThing {
            let spacing: CGFloat = 30.0
            if viewController.parent == nil {
                return
            }
            if #available(iOS 11.0, *) {
                viewController.additionalSafeAreaInsets.top = spacing
            }
            else {
                NSLayoutConstraint.activate([
                    viewController.view.topAnchor.constraint(equalTo: viewController.topLayoutGuide.bottomAnchor , constant: spacing),
                    viewController.bottomLayoutGuide.bottomAnchor.constraint(equalTo:viewController.view.bottomAnchor, constant: 0)
                    ])
            }
        }
        else {
            if #available(iOS 11.0, *) {
                viewController.additionalSafeAreaInsets.top = 0
            }
            else {

                    NSLayoutConstraint.activate([
                        viewController.view.topAnchor.constraint(equalTo: viewController.topLayoutGuide.bottomAnchor, constant: 0)
                        ])
            }
        }

Я ожидаю, что содержимое будет размещено ниже UILabel.Я неправильно использую topLayoutGuide?Работает ли он только с ограничениями, установленными в Интерфейсном Разработчике?

...