Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Extra bottom space/padding on iPhone X?

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 programmatically the height of this extra padding ?

I managed to manually determine the height of this padding which is 34 and here is how I managed to implement it with iPhone X detection:

Swift 4.0 and Xcode 9.0

if UIDevice().userInterfaceIdiom == .phone {     switch UIScreen.main.nativeBounds.height     {         case 2436: //iPhone X         self.keyboardInAppOffset.constant = -34.0         default:         self.keyboardInAppOffset.constant = 0     } } 

Is there a cleaner way to detect the height of this padding ?

like image 473
standousset Avatar asked Sep 15 '17 12:09

standousset


People also ask

What is padding bottom in Iphone?

The padding-bottom property is used to specify the width of the bottom area of the element's padding box. That is, it specifies the area of space required at the bottom of the element's content, inside any defined border.

What is safe area in Swift?

A safe area defines the area within a view that isn't covered by a navigation bar, tab bar, toolbar, or other views. SwiftUI views respect safe areas out of the box. But there are plenty of situations when you need to customize this behavior.


2 Answers

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)

like image 67
Paolo Avatar answered Oct 07 '22 23:10

Paolo


In Objective-C

if (@available(iOS 11.0, *)) {    UIWindow *window = UIApplication.sharedApplication.keyWindow;    CGFloat bottomPadding = window.safeAreaInsets.bottom; } 
like image 41
user6788419 Avatar answered Oct 08 '22 00:10

user6788419