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
}
}
是有更简洁的方法来检测这个填充的高度吗?
答
在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;
}
看到这个参考:https://medium.com/@hacknicity/how-ios-apps-adapt-to-the-iphone-x-screen-size-a00bd109bbb9 –
看看这可能会有所帮助https:///medium.com/the-traveled-ios-developers-guide/iphone-x-dealing-with-home-indicator-2e8e47f5647f –