[ios] Cambia la altura de la barra de navegación de forma programática en forma rápida


Answers

Aquí hay una solución simple de Swift 3 basada en subclases mínimos. Primera subclase UINavigationBar .:

class CustomNavigationBar: UINavigationBar {
    override func sizeThatFits(_ size: CGSize) -> CGSize {
        let newSize :CGSize = CGSize(width: self.frame.size.width, height: 54)
        return newSize
    }
}

Cree el controlador de navegación en código y use el inicializador que toma su clase de barra de navegación personalizada.

let nav = UINavigationController(navigationBarClass: CustomNavigationBar.self, 
                                 toolbarClass: nil)

Se conserva todo el comportamiento existente para UINavigationBar y se adopta su altura personalizada.

Question

Quiero hacer una barra de navegación más alta y estoy tratando de hacer esto usando una subclase de UINavigationBar.

Aquí está mi subclase de UINavigationBar:

import UIKit
class TallerNaviBar: UINavigationBar {
    override func sizeThatFits(size: CGSize) -> CGSize {
        var newSize:CGSize = CGSizeMake(size.width, 87)
        return newSize
    }
}

Y en mi ViewController que está incrustado en un controlador de navegación, escribo el siguiente código en la función viewDidLoad ()

self.navigationController!.setValue(TallerNaviBar(frame: CGRectMake(0, 0, self.view.frame.size.width, 87)), forKeyPath: "navigationBar")

No se informa ningún error, pero no obtengo nada cuando ejecuto el código. Una vista completamente en blanco. .

¿Cualquier sugerencia? ¿O alguna otra forma de cambiar la altura? Gracias.




Links