Есть ли способ использовать язык визуальных форматов, чтобы ограничить вид нижней части панели навигации? - PullRequest
1 голос
/ 26 сентября 2019

В настоящее время я пытаюсь расположить вид вертикально под панелью навигации.Тем не менее, я пытаюсь использовать Visual Format Language для этого.

По сути, у меня есть 3 вида: давайте назовем их a, b, c

Мой текущий код для этого:

 @"V:|-dist-[a][b][c]|"

Мне в основном нужно установить "dist "к высоте навигационной панели.В противном случае подпредставление «а» будет находиться над панелью навигации, поскольку суперпредставление находится в безопасной зоне.

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

CGFloat topbarHeight = self.navigationController.navigationBar.frame.size.height;

Но он возвращает:

ошибка: свойство 'navigationBar' не найдено для объекта типа 'id'

Я предполагаю, что это потому, что представление еще не загружено?И он не может распознать панель навигации?В идеале мне бы понравилось, если бы был какой-то символ, представляющий область по умолчанию на панели навигации.Похоже на "|"символ, представляющий суперпредставление в Visual Format Language.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 26 сентября 2019

Вы можете установить верхнее ограничение на UIViewController.view, если вы устанавливаете edgesForExtendedLayout = [], это будет держать ваш UIViewController вид чуть ниже панели навигации

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    self.edgesForExtendedLayout = []
    let view = UIView(frame: .zero)
    view.backgroundColor = UIColor.red
    view.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(view)

    self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[view]-0-|", options: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: ["view":view]));
    self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[view(50)]", options: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: ["view":view]));
}

Результат

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...