2017-07-07 1 views
0

Je travaille sur un didacticiel en ligne. J'ai suivi tout étape par étape et je reçois un message dans le débogueur lors de l'exécution du simulateur en disant que j'ai des contraintes contradictoires. Je ne crois pas qu'il y ait des contraintes contradictoires, alors j'ai pensé que j'allais chercher une deuxième opinion éclairée.Conflicting Constraints Message d'erreur dans le débogueur

Voici une capture d'écran du contrôleur de vue avec les contraintes conflictuelles.

View Controller from Xcode Project

Voici les captures d'écran du message d'erreur dans le débogueur: On dirait qu'il a un problème avec la contrainte de largeur sur le bouton d'arrêt, mais je ne peux pas dire du message d'erreur comment corriger il.

Part of Error Message

Toute aide est grandement appréciée!

+0

Première hauteur de retrait: 64 pour la dernière pile Visualisez –

+0

@jaydeepVyas alors la pile de départ prendra la moitié de l'écran. –

+0

J'ai donné réponse ci-dessous voir que –

Répondre

0

essayer de la manière suivante vous n'a pas besoin de donner des contraintes à la dernière vue pile Pour la dernière image de bouton vous devez définir le mode contenu programatically centre enter image description here

+0

en utilisant les suggestions de contraintes ci-dessus, il a tout décalé vers la gauche presque du côté du contrôleur de vue. Mon message d'erreur a été raccourci. –

+0

pouvez-vous me donner votre code zip –

+0

@Cali_Ranger pouvez-vous me donner juste vos images –

0

Il semble que vous réglez le bouton d'arrêt width = 64 mais réelle vous n'avez pas défini la largeur pour la vue parente, donc l'ensemble automatique est égal à 0 ou 343. Avez-vous eu des contraintes rouges lorsque vous cliquez sur le bouton stop?

+0

La seule contrainte que j'ai en cliquant sur le bouton est la contrainte de largeur qui est mise en place.J'ai essayé de définir la contrainte pour la vue de la pile contenant le bouton d'arrêt à une largeur de 64, mais cela n'a pas fait de bien. Je reçois toujours un énorme message d'erreur. –

0

J'ai été capable de trouver la réponse. J'ai dû changer la priorité à 999 sur la contrainte de largeur du bouton d'arrêt. Le message de débogage disait que les contraintes ci-dessous étaient en conflit.

(
"<NSLayoutConstraint:0x600000096080 UIButton:0x7fb874e157d0.width == 64 (active)>", 
"<NSLayoutConstraint:0x610000097ac0 'fittingSizeHTarget' UIStackView:0x7fb874e155d0.width == 0 (active)>", 
"<NSLayoutConstraint:0x600000096210 'UISV-canvas-connection' UIStackView:0x7fb874e155d0.leading <= UIButton:0x7fb874e157d0.leading (active)>", 
"<NSLayoutConstraint:0x600000097ca0 'UISV-canvas-connection' UIStackView:0x7fb874e155d0.centerX == UIButton:0x7fb874e157d0.centerX (active)>" 
) 

Ensuite, il a dit qu'il fallait briser la contrainte largeur du bouton d'arrêt afin de résoudre le problème des contraintes contradictoires. La suppression de la priorité à 999 a empêché l'apparition du message de débogage et a permis de conserver les boutons si je le souhaitais.

Je trouve les informations de solution ici:

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/DebuggingTricksandTips.html

[À partir du lien] de ces contraintes, le dernier a été créé par le système. Vous ne pouvez pas le changer. De plus, cela crée un conflit évident avec la première contrainte. Si vous n'avez que 320 points de large, vous ne pourrez jamais avoir une étiquette de 400 points. Heureusement, vous n'avez pas à vous débarrasser de la première contrainte. Si vous déposez sa priorité sur 999, le système essaie toujours de fournir la largeur sélectionnée, en se rapprochant le plus possible tout en respectant les autres contraintes.