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)
}
}
,但它不工作。
這種情況下最好的方法是什麼?
謝謝
謝謝,不知道屬性。 –
不客氣。如果我回答了您的問題,那麼您可以考慮將其設置爲已回答。 –