iPhone X上的额外底部空间/填充?

iPhone X上的额外底部空间/填充?

问题描述:

在纵向模式下的iPhone X上,如果将安全区域的底部约束设置为0,则最终会在屏幕底部留出额外的空间。 你如何通过编程获得这个额外填充的高度?iPhone X上的额外底部空间/填充?

我设法手动确定此填充是34和这里的高度是我如何管理与iPhone X检测来实现它:

雨燕4.0的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 
    } 
} 

是有更简洁的方法来检测这个填充的高度吗?

+1

看到这个参考:https://medium.com/@hacknicity/how-ios-apps-adapt-to-the-iphone-x-screen-size-a00bd109bbb9 –

+1

看看这可能会有所帮助https:///medium.com/the-traveled-ios-developers-guide/iphone-x-dealing-with-home-indicator-2e8e47f5647f –

在iOS 11中,视图具有safeAreaInsets属性。如果你得到这些插图的bottom属性,你可以得到底部填充,而在iPhone X的高度:

if #available(iOS 11.0, *) { 
    let bottomPadding = view.safeAreaInsets.bottom 
    // ... 
} 

(同样与状态栏上填充)

如果你突然有没有意见,例如,CollectionViewLayout,可以从窗口检索它太:

private static var itemHeight: CGFloat { 
    guard #available(iOS 11.0, *), 
     let window = UIApplication.shared.keyWindow else { 
      return Constants.itemHeight 
    } 
    return Constants.itemHeight - window.safeAreaInsets.bottom 
} 

Objective-C的

if (@available(iOS 11.0, *)) { 
    UIWindow *window = UIApplication.sharedApplication.keyWindow; 
    CGFloat bottomPadding = window.safeAreaInsets.bottom; 
}