web-dev-qa-db-fra.com

Erreurs de mise en page Xcode 5 - Le cadre de vue mal placé pour Label sera différent lors de l'exécution

Je viens d'installer Xcode 5 et je prépare actuellement la publication de mes applications sur l'App Store sur iOS 7 la semaine prochaine. Je reçois tout un tas d'erreurs et d'avertissements. 

Dans une application où j'ai un UIPickerView, UITextFields et un tas de UILabels. Dans cette application, une erreur Illegal Configuration (rouge) apparaît sur presque tous les contrôles du fichier de scénario. Je ne sais pas quelle est cette erreur ni comment y remédier. J'apprécierais de l'aide pour cela. Je ne peux pas complètement recréer le fichier car il y a 20 vues compliquées.

Dans une autre application, il existe une UIScrollView contenant un groupe de UILabels et UITextFields, plus une UITextView créée par programme et contenant du texte basé sur ce que vous avez sélectionné dans une (vue précédente) UITableView, ainsi que se redimensionnant pour s'adapter au contenu. UIScrollView est redimensionné pour s'adapter à la nouvelle taille de UITextView. Celui-ci compile et construit et UITextView est créé mais ne contient pas le texte, probablement parce qu'il est maintenant redimensionné de manière incorrecte. UIScrollView défile maintenant également horizontalement, en plus de ce qu’il n’est pas censé faire verticalement. Celui-ci ne donne que des avertissements (jaunes) qui disent tous: 

Misplaced View Frame for "Label - Symbol:" will be different at run time. pour 4 contrôles comprenant cette étiquette et un autre, un champ de texte et la vue de défilement. 

J'apprécierais toute aide à ce sujet car c'est la première fois que je m'adapte à une nouvelle version de Xcode et iOS.

P.S: Les détails sur l'erreur Illegal Configuration incluent:
Auto Layout on iOS Versions prior to 6.0

Merci!

18
Youssef Moawad

Si vous recherchez toujours une réponse ici, il est probable que votre vue Mise en forme automatique ne comporte aucune contrainte, ni aucune contrainte inappropriée. 

Vous pouvez résoudre ce problème en sélectionnant la vue et en accédant à l'option de menu Xcode: Editor -> Resolve Auto Layout Issues -> Add Missing Constraints / Reset to Suggested Constraints.

Vous pouvez également sélectionner la mise en page entière et faire la même chose, ce qui réinitialisera toutes les vues de votre mise en page aux contraintes recommandées.

Si vous devez définir des contraintes personnalisées, vous devez définir vos propres contraintes de présentation automatique dans le fichier Storyboard/XIB ou manuellement dans le code.

Pour plus d'informations sur la mise en page automatique, vous pouvez consulter la documentation Apple .

Enfin, vous pouvez également désactiver la mise en page automatique sur la mise en page si vous souhaitez qu'elle apparaisse telle quelle, sans réajustement automatique (ceci n'est pas recommandé).

enter image description here

45
Joel Fischer

Reset to Suggested Constraints ne se débarrasse parfois pas de cet avertissement. La solution consiste à sélectionner Placeholder dans le menu déroulant Intrinsic Size de l'inspecteur de taille de UIView en question. Et ajoutez ensuite les contraintes manquantes selon vos besoins.

15
Morrowless

Il vous suffit de sélectionner votre contrôleur de vue 

Editeur -> Résoudre les problèmes de report automatique -> Effacer toutes les contraintes dans ViewController et vous avez terminé.

3
ProgrammingNinja

Concernant le cadre "Le cadre de l'étiquette sera différent au moment de l'exécution" - Veuillez vous reporter aux notes sur l'édition sous Autolayout: Runtime.

https://developer.Apple.com/library/prerelease/ios/releasenotes/DeveloperTools/RN-Xcode/index.html#//Apple_ref/doc/uid/TP40001051

La réponse complète sera affichée ici après que le NDA soit levé.

Remarque: cela se produit également sous Xcode 4.2, mais le problème n’est pas abordé par IB.

2
memmons

J'obtenais également la même erreur dans les deux champs de texte que j'ai ajoutés dans View controller. Ce qui m'a aidé à résoudre le problème, c'est: Dans le document Outline, j'ai Ctr + fait glisser le premier champ de texte jusqu'à la vue et sélectionné Centrer horizontalement dans le conteneur . Ensuite, j'ai Ctr + fait glisser le deuxième champ de texte jusqu'à la vue et sélectionné Centrer verticalement dans le conteneur . J'espère que cela vous aide aussi.

0
Nupur Sharma

Vous pouvez également désactiver la mise en page automatique. 

Cette approche est pratique si vous souhaitez être compatible avec iOS 5.

0
Jay Versluis

Xcode fonctionne désormais avec une position relative par rapport aux vues parent. Vous pouvez les corriger en cliquant sur les lignes orange, sur la marque et sélectionnez utiliser la valeur du storyboard

0
user2714257