Je suis en train de mettre à jour mon application pour l'adapter à l'iPhone X. Toutes les vues fonctionnent bien maintenant, sauf une. J'ai un contrôleur de vue qui présente une UIView personnalisée qui couvre tout l'écran. Avant, j'utilisais UIScreen.main.bounds
pour connaître la taille de la vue avant que la mise en page ne soit terminée (j'en ai besoin pour déterminer la taille correcte des éléments d'une collectionView). Je pensais que maintenant je pourrais faire quelque chose comme UIScreen.main.bounds.size.height - safeAreaInsets.bottom
pour obtenir la bonne taille utilisable. Le problème est que safeAreaInsets renvoie (0,0,0,0) en essayant sur un iPhone X (Simulateur). Avez-vous une idée ? Dans d'autres vues, j'obtiens les bons chiffres pour safeAreaInsets.
Merci !
4 votes
N'importe où, n'importe quand, vous pouvez utiliser : ` if #available(iOS 11.0, tvOS 11.0, *) { return UIApplication.shared.delegate ?.window ??.safeAreaInsets != .zero } return false` SOURCE
0 votes
Comme dans la réponse de Mars ci-dessous, je constate également que la seule façon fiable d'obtenir ces éléments est dans viewDidLayoutSubviews() ou viewDidAppear. En fait, "override func viewSafeAreaInsetsDidChange()" semble être la meilleure solution.