UINavigationBar с более высокой высотой над представлением контроллера - PullRequest
0 голосов

Я пытаюсь увеличить панель навигации контроллера навигации в определенной точке.для iOS 11 мне удалось сделать эту настройку navigationBar.prefersLargeTitles = true Но для других версий iOS я делаю это вручную

Проблема заключается в том, что, когда я пытаюсь вручную изменить высоту панели навигации, представление контроллера представления оказывается подрасширенная часть панели навигации.

Вот где я делаю трюк:

extension UINavigationController {

    func setupNavigationWithMenu(){
        let bounds = self.navigationBar.bounds
        let menuHeight: CGFloat = 50 //whatever height you want to add to the existing height
        let segmentedMenu = SegmentedMenu(frame: CGRect(x: 0, y: bounds.height, width: bounds.width, height: menuHeight))
        if #available(iOS 11.0, *) {
            self.navigationBar.prefersLargeTitles = true
        } else {

            let bounds = self.navigationBar.bounds
            self.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + menuHeight)

        }

        self.navigationBar.addSubview(segmentedMenu)

    }

}

И я вызываю настройки здесь:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController!.setupNavigationWithMenu()
}

Как можноЯ настраиваю вид моего контроллера представления так, чтобы он запускался после панели навигации?

Для iOS 11 он работает просто отлично, для других вид отображается под навигацией

Это то, что происходит, когда это не iOS11 View Under the Navigation enter image description here

1 Ответ

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

Панель навигации имеет фиксированную высоту, управляемую контроллером навигации.Идея состоит в том, чтобы придерживаться этого, а не пытаться изменить его.

Подход «большие заголовки» работает только для iOS 11, потому что большие заголовки - это инновация iOS 11.

...