11

I have developed an app without autoLayout or interface-builder, all by code. It runs ok in all iPhones except iPhone X where the top bar stays under the new black thing in the middle.

It's possible to get that height by code, so I can shift my Navigationbar that height down and all runs normal ?

The solutions I see, they use auto layout.

I just want the get the distance to shift it down..

Jack
  • 13,571
  • 6
  • 76
  • 98

2 Answers2

15

In my Swift app, I get the frame of the status bar with

Swift: UIApplication.shared.statusBarFrame

Objective-C: [UIApplication sharedApplication].statusBarFrame

That's a CGRect, so you can get its height by doing size.height on that. So, altogether, you can do this in Objective-C:

[UIApplication sharedApplication].statusBarFrame.size.height
Jack
  • 13,571
  • 6
  • 76
  • 98
Michael Hulet
  • 3,253
  • 1
  • 16
  • 33
10

You can always get the status bar height with or without status bar hidden by:

UIApplication.shared.keyWindow!.safeAreaInsets.top

and the home screen indicator

UIApplication.shared.keyWindow!.safeAreaInsets.bottom

If it's landscape the value would change

and safeAreaLayoutGuide is there also

iBug
  • 35,554
  • 7
  • 89
  • 134
Puttin
  • 1,596
  • 23
  • 27