Comme je n'utilise pas de storyboards pour créer mes vues, je me demandais s'il y avait l'option "Utiliser les guides de zone sûre" par programmation ou quelque chose comme ça.
J'ai essayé d'ancrer mes points de vue sur
view.safeAreaLayoutGuide
mais ils continuent de chevaucher le sommet du simulateur iPhone X.
ios
swift
iphone-x
safearealayoutguide
Phillip
la source
la source
view.safeAreaInsets
? Avez-vous essayé cela?Réponses:
Voici un exemple de code (Réf. De: Safe Area Layout Guide ):
Si vous créez vos contraintes dans le code, utilisez la propriété safeAreaLayoutGuide de UIView pour obtenir les ancres de disposition appropriées. Recréons l'exemple d'Interface Builder ci-dessus dans le code pour voir à quoi il ressemble:
En supposant que nous ayons la vue verte en tant que propriété dans notre contrôleur de vue:
Nous pourrions avoir une fonction pour configurer les vues et les contraintes appelées depuis viewDidLoad:
Créez les contraintes de marge de début et de fin comme toujours à l'aide du layoutMarginsGuide de la vue racine:
Désormais, à moins que vous ne cibliez iOS 11 et versions ultérieures, vous devrez encapsuler les contraintes du guide de mise en page de zone de sécurité avec #available et revenir aux guides de mise en page supérieur et inférieur pour les versions antérieures d'iOS:
Résultat:
Voici la documentation officielle des développeurs Apple pour le guide de disposition des zones de sécurité
La zone de sécurité est requise pour gérer la conception de l'interface utilisateur pour iPhone-X. Voici les instructions de base pour concevoir une interface utilisateur pour iPhone-X à l'aide de la disposition de la zone de sécurité
la source
J'utilise en fait une extension et je contrôle s'il s'agit d'ios 11 ou non.
la source
self.safeAreaLayoutGuide
au lieu deself.layoutMarginsGuide
. Le coffre-fort utilisé dans cette réponse a fonctionné correctement pour que je reste dans la zone de sécurité! Une chose que je suggérerais de changer serait d'utiliserleadingAnchor
ettrailingAnchor
au lieu deleftAnchor
etrightAnchor
. Bravo!SafeAreaLayoutGuide
est laUIView
propriété,À utiliser
safeAreaLayoutGuide
pour éviter que nos objets ne se coupent / se chevauchent à partir des coins arrondis, des barres de navigation, des barres d'onglets, des barres d'outils et d'autres vues d'ancêtres.Nous pouvons créer respectivement des
safeAreaLayoutGuide
objets et des contraintes d'objet.Contraintes pour Portrait + Paysage est -
UILayoutGuide
safeAreaLayoutGuide
la source
viewDidAppear
, sauf si vous savez absolument ce que vous faites.viewDidAppear
est appelée plusieurs fois et donc, vos contraintes seront dupliquées à chaque fois qu'elle sera appelée.Pour ceux d'entre vous qui utilisent SnapKit , tout comme moi, la solution est d'ancrer vos contraintes pour
view.safeAreaLayoutGuide
aimer ainsi:la source
J'utilise ceci au lieu d'ajouter des contraintes de marge de début et de fin au layoutMarginsGuide:
Veuillez également cocher l'option pour la version inférieure d'ios 11 à partir de la réponse de Krunal.
la source
Utiliser
UIWindow
ouUIView
« ssafeAreaInsets
.bottom
.top
.left
.right
la source
Utilisez des contraintes avec un format visuel et vous obtenez le respect de la zone de sécurité gratuitement.
la source
Extension de zone de sécurité pour Objective-C
la source
Swift 4.2 et 5.0. Supposons que vous souhaitiez ajouter des contraintes de début, de fin, de haut et de bas sur viewBg. Donc, vous pouvez utiliser le code ci-dessous.
la source
Cette extension vous aide à contraindre un UIVIew à son superview et superview + safeArea:
la source
Vous pouvez utiliser view.safeAreaInsets comme expliqué ici https://www.raywenderlich.com/174078/auto-layout-visual-format-language-tutorial-2
exemple de code (extrait de raywenderlich.com):
la source