0
我有一个应用程序,它没有UINavigationController
,它有一个UICollectionView
,其中有一些单元格作为其源。在iPhone X状态栏后面添加UIView
为避免单元出现在状态栏的后面,我在其后面添加了一个UIView
。
iPhone X
之前,它是非常简单的做到这一点,如下所示:
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)
}
}
,但它不工作。
这种情况下最好的方法是什么?
谢谢
谢谢,不知道属性。 –
不客气。如果我回答了您的问题,那么您可以考虑将其设置为已回答。 –