Подтвердить что ты не робот

Как я могу изменить высоту панели навигации - Swift 3

Я почти уверен, что это не дубликат, потому что я посмотрел на другие ответы, и все они устарели и не дают точного ответа.

У меня есть контроллер навигации и несколько контроллеров представления. Я хочу сделать панель навигации немного выше, чтобы она соответствовала нужному мне размеру текста. Как я могу это сделать?

Я попробовал это:

UINavigationBar.appearance().frame = CGRect(x: 0.0, y: 0.0, width: 320.0, height: 210.0) 

но ничего не происходит...

Кроме того, я не смог добавить какие-либо ограничения на панель навигации с помощью кнопок макета Xcode.

Надеюсь, кто-нибудь может помочь мне решить эту проблему. Заранее спасибо!

enter image description here

4b9b3361

Ответ 1

Вот один из способов сделать это:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    let height: CGFloat = 50 //whatever height you want to add to the existing height
    let bounds = self.navigationController!.navigationBar.bounds
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height)

}

Ответ 2

Вы можете написать этот код в классе, который расширяет UINavigationController

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    let height = CGFloat(72)
    navigationBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: height)
}

Ответ 3

Вы можете создать класс на основе UINavigationBar, как этот

class TTNavigationBar: UINavigationBar {

    override func sizeThatFits(_ size: CGSize) -> CGSize {
        return CGSize(width: UIScreen.main.bounds.width, height: 55)
    }

}

И добавьте его в свой навигационный контроллер.

Ответ 4

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

extension UINavigationBar {
    open override func sizeThatFits(_ size: CGSize) -> CGSize {
        return CGSize(width: UIScreen.main.bounds.width, height: 51)
    }
}

Ответ 5

вы можете нарисовать панель навигации от xib (с вашей высотой), а затем:

self.navigationController?.navigationBar.addSubview(yourNavBarView)

в альтернативном варианте, если вы хотите создать UIView из кода,

let viewNavBar = UIView(frame: CGRect(
    origin: CGPoint(x: 0, y:0), 
    size: CGSize(width: self.view.frame.size.width, height: 100)))

а затем добавление в панель навигации.