Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在iPhone X状态栏后面添加UIView_Ios_Swift_Uistatusbar_Iphone X - Fatal编程技术网

Ios 在iPhone X状态栏后面添加UIView

Ios 在iPhone X状态栏后面添加UIView,ios,swift,uistatusbar,iphone-x,Ios,Swift,Uistatusbar,Iphone X,我有一个应用程序,它没有UINavigationController,它有一个UICollectionView,有一些单元格作为它的提要 为了避免状态栏后面出现单元格,我在状态栏后面添加了一个UIView 在iphonex之前,这样做非常简单,如下所示: let v = UIView() v.backgroundColor = .white view.addSubview(v) v.anchor(top: view.topAnchor, left: view.leftAnchor, bottom

我有一个应用程序,它没有
UINavigationController
,它有一个
UICollectionView
,有一些单元格作为它的提要

为了避免状态栏后面出现单元格,我在状态栏后面添加了一个
UIView

iphonex
之前,这样做非常简单,如下所示:

let v = UIView()
v.backgroundColor = .white
view.addSubview(v)
v.anchor(top: view.topAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 0, paddinfLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 20)
这样,一个微小的白色层就会如预期的那样出现在它的后面

(此锚定方法来自扩展,而不是默认语言)

如何在iPhone X上实现这一点

到目前为止,我尝试了以下代码:

if #available(iOS 11, *) {
    v.anchor(top: view.safeAreaLayoutGuide.topAnchor, left: view.safeAreaLayoutGuide.leftAnchor, bottom: nil, right: view.safeAreaLayoutGuide.rightAnchor, paddingTop: 0, paddinfLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 20)

    let window = UIWindow(frame: UIScreen.main.bounds)
    print("window.safeAreaInsets.top:", window.safeAreaInsets.top)
    if window.safeAreaInsets.top > CGFloat(0.0) {
        print("iPhone X")
        v.anchor(top:  view.safeAreaLayoutGuide.topAnchor, left: view.safeAreaLayoutGuide.leftAnchor, bottom: nil, right: view.safeAreaLayoutGuide.rightAnchor, paddingTop:-44, paddinfLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: window.safeAreaInsets.top)
    } else {
        v.anchor(top: view.topAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 0, paddinfLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 20)
    }

}
但它不起作用

在这种情况下,最好的方法是什么


谢谢

您必须告诉您的collectionView以调整插图:

if #available(iOS 11, *) {
    collectionView.contentInsetAdjustmentBehavior = .scrollableAxes
}

这将确保您的内容插入到足够的位置,因此不会与iPhone X的状态栏重叠。

谢谢,我不知道该属性。不客气。如果我回答了你的问题,你可以考虑把它设定为答案。