Изменить высоту UINavigationBar - PullRequest
22 голосов
/ 22 мая 2009

Может кто-нибудь сказать мне, как изменить высоту панели навигации?

Вот что у меня есть:

CGFloat navBarHeight = 10;
self.navigationController.navigationBar.frame.size.width = navBarHeight;

Ответы [ 12 ]

0 голосов
/ 03 марта 2017

Создание категории и переопределение sizeThatFits (_ size: CGSize) -> CGSize метод изменяет размер UINavigationBar по всему приложению. Предполагая, что вы хотите изменить высоту / размер UINavigationBar только в одном конкретном ViewController (в моем случае)

Вот как я это сделал.

extension UINavigationBar {
    open override func sizeThatFits(_ size: CGSize) -> CGSize {
        let v = self.value(forKey: "frame") as? CGRect
        return v?.size ?? CGSize(width: UIScreen.main.bounds.width, height: 44)
    }
}

в вызывающем ViewController будет выглядеть как

override func viewDidLoad() {
    super.viewDidLoad()
    configureNavigationBar()
}

private func configureNavigationBar() {
    var naviBarFrame = self.navigationController?.navigationBar.frame
    naviBarFrame?.size.height = 74
    let rect = naviBarFrame ?? CGRect(x: 0, y: 20, width: UIScreen.main.bounds.width, height: 74)
    self.navigationController?.navigationBar.setValue(rect, forKey: "frame")
}
0 голосов
/ 10 мая 2016

Попробуйте этот код внутри - (void)viewDidLayoutSubviews метода,

CGFloat navBarHeight = 10.0f;    
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, navBarHeight);
[self.navigationController.navigationBar setFrame:frame];
...