J'ai une application, qui n'a pas de UINavigationController
et qui a un UICollectionView
avec des cellules comme source. Pour éviter que les cellules n'apparaissent derrière la barre d'état, j'ai ajouté un UIView
derrière.Ajouter UIView derrière la barre d'état de l'iPhone X
Avant iPhone X
il était assez simple pour ce faire, comme ce qui suit:
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)
Ce faisant, une petite couche blanche apparaît derrière elle comme prévu.
(cette méthode d'ancrage provient d'une extension, pas de langue par défaut).
Comment puis-je obtenir ceci pour iPhone X
?
Jusqu'à présent, j'essayé le code suivant:
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)
}
}
mais il ne fonctionne pas.
Quelle est la meilleure approche dans ce cas?
Merci
Merci, je ne connaissais pas cette propriété. –
De rien. Si j'ai répondu à votre question, vous pouvez envisager de la définir comme réponse. –