Programmatically get height of navigation bar Programmatically get height of navigation bar objective-c objective-c

Programmatically get height of navigation bar


Do something like this ?

    NSLog(@"Navframe Height=%f",        self.navigationController.navigationBar.frame.size.height);

The swift version is located here


UPDATE

iOS 13

As the statusBarFrame was deprecated in iOS13 you can use this:

extension UIViewController {    /**     *  Height of status bar + navigation bar (if navigation bar exist)     */    var topbarHeight: CGFloat {        return (view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0.0) +            (self.navigationController?.navigationBar.frame.height ?? 0.0)    }}


With iPhone-X, height of top bar (navigation bar + status bar) is changed (increased).

Try this if you want exact height of top bar (both navigation bar + status bar):

UPDATE

iOS 13

As the statusBarFrame was deprecated in iOS13 you can use this:

extension UIViewController {    /**     *  Height of status bar + navigation bar (if navigation bar exist)     */    var topbarHeight: CGFloat {        return (view.window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0.0) +            (self.navigationController?.navigationBar.frame.height ?? 0.0)    }}

Objective-C

CGFloat topbarHeight = ([UIApplication sharedApplication].statusBarFrame.size.height +       (self.navigationController.navigationBar.frame.size.height ?: 0.0));

Swift 4

let topBarHeight = UIApplication.shared.statusBarFrame.size.height +        (self.navigationController?.navigationBar.frame.height ?? 0.0)

For ease, try this UIViewController extension

extension UIViewController {    /**     *  Height of status bar + navigation bar (if navigation bar exist)     */    var topbarHeight: CGFloat {        return UIApplication.shared.statusBarFrame.size.height +            (self.navigationController?.navigationBar.frame.height ?? 0.0)    }}

Swift 3

let topBarHeight = UIApplication.sharedApplication().statusBarFrame.size.height +(self.navigationController?.navigationBar.frame.height ?? 0.0)


Swift version:

let navigationBarHeight: CGFloat = self.navigationController!.navigationBar.frame.height