bar ios swift xcode uinavigationcontroller uinavigationbar

ios - navigation bar xcode swift



¿Cómo puedo cambiar la altura de la barra de navegación Swift 3? (5)

Aquí hay una forma de hacerlo:

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) }

Estoy bastante seguro de que esto no está duplicado porque miré otras respuestas y todas están desactualizadas y no proporcionan una respuesta exacta.

Tengo un controlador de navegación y varios controladores de vista. Quiero que la barra de navegación sea un poco más alta para que se ajuste al tamaño de texto que necesito. Cómo puedo hacer eso ?

Intenté esto: UINavigationBar.appearance (). Frame = CGRect (x: 0.0, y: 0.0, width: 320.0, height: 210.0) pero no sucede nada ...

Además, no pude agregar restricciones a la barra de navegación usando los botones de diseño Xcode.

Espero que alguien pueda ayudarme a solucionar este problema. ¡Gracias por adelantado!


Esto podría ser mejor si todas las barras de navegación de su aplicación tienen la misma altura ajustada.

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


Puede crear una clase basada en UINavigationBar como esta

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

Y agréguelo a su NavigationController.


Puede escribir este código en la clase que extiende UINavigationController

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


puedes dibujar tu barra de navegación desde xib (con tu altura) y luego:

self.navigationController?.navigationBar.addSubview(yourNavBarView)

como alternativa, si desea crear UIView a partir del código,

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

y luego agregando a la barra de navegación.