web-dev-qa-db-fra.com

Résultat inattendu pour autolayout sur iphone 6 plus

J'ai ajouté un uiview sur un contrôleur de vue (VC), essayant de définir une largeur égale à la largeur de la vue de VC.

Ce que j'ai défini et attendu: xcode setting and expected result

Et ce que j'ai sur l'iphone 6 plus: what i got on ip6+

J'ai essayé de changer les constantes de l'espace de tête et de l'espace de fuite et aucune aide. Existe-t-il des options spéciales pour l'autolayout pour l'iphone 6+?

Le réglage de la vue ici est "N'importe quelle largeur x hauteur normale"

------- Ajouté Dec 2016 Aux personnes qui sont déroutées par cette affaire comme moi: Il existe une layout layout property dans UIView, qui est un UIEdgeInsets (8,8,8,8). C'est quelque chose comme un remplissage CSS.

Lorsque le bord de votre vue est proche du bord de la vue supérieure et que la propriété preserveesSuperviewLayoutMargins est définie à true, les marges de présentation réelles peuvent être augmentées pour éviter que le contenu ne chevauche les marges de la vue supérieure.

Les marges par défaut sont huit points de chaque côté.

Si la vue est la vue racine d’un contrôleur de vue, le système définit et gère les marges. Les marges supérieure et inférieure sont définies à zéro point. Les marges latérales varient en fonction de la classe de taille actuelle, mais peuvent être 16 ou 20 points. Vous ne pouvez pas changer ces marges.

27
Horst

Essayez de supprimer la coche Contraindre aux marges lors de l'ajout de contraintes. Voici un coup d'oeil:

Contraindre aux marges est vérifié et son résultat

Constrain to marginsresult

Maintenant, après avoir supprimé les contraintes et rajouté les contraintes avec Contraindre aux marges décochées, voici le résultat:

Constrain to margins uncheckedresult without Constrain to margins

53
Sharon Nathaniel

La réponse de Sharon fonctionne à merveille, mais il n'est pas nécessaire de supprimer les contraintes existantes pour résoudre le problème. Vous pouvez éditer les contraintes existantes en supprimant la marge superflue:

Before applying solutionSolution stepAfter applying solution

19
pimguilherme

La modification de contraintes existantes pour supprimer la marge superflue ne fonctionnera pas. Vous devez supprimer les contraintes existantes et en ajouter de nouvelles en conservant les contraintes de marge non sélectionnées.

0
bhoomi

J'ai rencontré le même problème pour mon bouton "Terminé". Le problème était que ma vue (bouton terminé) était dans la hiérarchie de la vue de base, donc je ramène la vue dans la vue racine (vue du contrôleur). et définir des contraintes en conséquence.

Mon ensemble de cas contraint Épingler -> Décocher la contrainte sur la marge -> Bas, début et fin (valeur de contrainte = 0)

 enter image description here

Assurez-vous que la hiérarchie des vues ne doit pas être la même (la sous-vue peut l'être, mais pas la vue coupée).

 enter image description here

0
Avijit Nagare