On the iPhone X in portrait mode, if you set a bottom constraint to safe area to 0, you will end up with an extra space at the bottom of the screen. How do you get programma
use this line to become your bottom value for iPhoneX
if #available(iOS 11.0, *) {
let bottomPadding = view.safeAreaInsets.bottom
}
and don't forget to add this in layoutSubviews() because safeAreaInsets has the correct size in layoutSubviews() otherwise you will become wrong values.
In iOS 11, views have a safeAreaInsets
property. If you get the bottom
property of these insets you can get the height of the bottom padding while on iPhone X:
if #available(iOS 11.0, *) {
let bottomPadding = view.safeAreaInsets.bottom
// ...
}
(likewise for the top padding with status bar)
In Objective-C
if (@available(iOS 11.0, *)) {
UIWindow *window = UIApplication.sharedApplication.keyWindow;
CGFloat bottomPadding = window.safeAreaInsets.bottom;
}
UIApplication.shared.windows.first?.safeAreaInsets.bottom ?? 0.0
iOS 13 and up
var bottomPadding: CGFloat = 0.0
if #available(iOS 11.0, *) {
let window = UIApplication.shared.keyWindow
bottomPadding = window?.safeAreaInsets.bottom ?? 0.0
}
Now you can use bottomPadding
as per your needs.
iOS 11 (a mix from answers above)
let padding = UIApplication.shared.keyWindow?.safeAreaInsets.bottom ?? 0