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的状态栏重叠。谢谢,我不知道该属性。不客气。如果我回答了你的问题,你可以考虑把它设定为答案。