Xcode 11 ajoute de nouvelles contraintes set zero: utilisez set value au lieu de default / standard

74

J'avais l'habitude d'utiliser la mise en page automatique pour ajouter de nouvelles contraintes pour créer des contraintes simples pour la vue d'ensemble / relative comme celle-ci (pendant longtemps):

entrez la description de l'image ici

Cependant, récemment après avoir mis à jour le dernier xcode (11.3.3 ou seulement 11.3 / 11C29), j'ai ce problème étrange: lorsque je définit la constante = 0, ils génèrent toujours les contraintes de manière indésirable comme ceci:

entrez la description de l'image ici

Et il semble que la valeur par défaut soit en quelque sorte de 20 et que ma vue soit si fausse (0 par rapport à 20?)

Si je corrige cela en modifiant la contrainte comme ceci:

entrez la description de l'image ici

Ensuite, il corrigera à nouveau (l'image est après avoir édité les contraintes, avant d'être éditée, elle affiche constante = Standard)

Je ne sais même pas comment décrire le problème, mais comment puis-je corriger ce nouveau add new constraintpour utiliser mon point de désir au lieu de standard / par défaut?

Mise à jour:

Cela semble ne se produire que lorsque la contrainte de superview. Je ne sais pas comment y remédier.

Mise à jour du 1er avril 2020:

Xcode11.4 a corrigé ce problème.

Eddie
la source
2
Même problème ici. Je pense que cela est apparu pour la première fois lorsque j'ai mis à jour la mise à jour 11.3: le même projet n'a pas ce problème sur une autre machine avec la même version de xcode. Peut-être que c'est lié à la configuration IDE ou peut-être que c'est un bogue d'IDE lui-même.
Dmitrij Rogov,
1
Même problème ici. Utilisation de Xcode 11.3 (11C29).
user525504
1
Même problème Version 11.3 (11C29)
user832
1
@DmitrijRogov Je me rappelais parfois auparavant (xcode 8,9 ou 10), il y a un paramètre quelque part qui nous aide à définir la standardvaleur (afin que nous puissions définir 10 ou 0 au lieu de default = 8) mais j'ai oublié où il se trouve maintenant. Ou peut-être ont-ils supprimé la fonctionnalité?
Eddie
5
Cela me rend fou
Buyin Brian

Réponses:

37

Cela ressemble à un bug (n'oubliez pas de déposer avec Apple). Voici une solution simple:

Lorsque vous remplissez le nombre dans le "popover", au lieu de taper 0, tapez 0.01. Cela empêchera le nombre de passer mystérieusement à "Standard". D'accord, ce 0.01n'est pas la même chose 0mais c'est assez proche pour que vous ne puissiez pas faire la différence, et au moins vous n'avez pas besoin de revenir en arrière et de la changer plus tard.

EDIT Apple dit que ce bug sera corrigé dans Xcode 11.4:

Correction d'un bug qui empêchait la saisie d'une constante 0 dans les éditeurs contextuels de contraintes. (54076090)

mat
la source
1
beau travail, merci!
Eddie
1
Génial! Quel ennuyeux ce problème peut être ..
Joaquin Pereira
Cela fonctionne bien quand j'utilise 0,01 au lieu de 0
Teja
Mais le mettre à 0 la deuxième fois fonctionne. Pourquoi s'embêter avec 0,01? C'est assez ennuyeux de toute façon. Heureusement que c'est un bug et non une "fonctionnalité".
Vlad Rusu
11

Pendant que la solution de contournement de @matt fonctionne, je veux juste ajouter que vous pouvez la définir sur 0,01, puis la modifier sur 0, elle ne changera plus à la valeur standard. Remarque: Xcode 11.3

chhay sotheara
la source
Pour moi, lorsque je le remets à 0, il redevient alors "standard". Xcode 11.3.1.
John Scalo
10

Depuis Xcode 11.3.1:

La solution la plus soignée et la plus rapide que j'ai trouvée est la suivante:

Tapez simplement -0dans le champ de contrainte. Xcode semble rejeter le négatif et il se comporte correctement, ce qui est mieux que de lire 0.01pour tout.

Vous pouvez insérer toutes les contraintes à la fois, sans avoir à en faire une à la fois ou à modifier ultérieurement.

Xcode affiche les valeurs comme ceci

Cela semble être un comportement vraiment stupide. Y a-t-il une raison pour laquelle Apple aurait pu le faire délibérément ...?

Edit: Cela ne semble pas fonctionner à chaque fois , ce qui est frustrant. Je viens d'avoir un UIImageView show 0 to Superview, mais toujours visuellement à la valeur par défaut (20). Cela semble vraiment être un bug avec l'IB car le comportement est totalement illogique.

Dave Y
la source
9

Ce comportement semble être corrigé sur Xcode 11.4: notes de version

Correction d'un bug qui empêchait la saisie d'une constante 0 dans les éditeurs contextuels de contraintes. (54076090)


Réponse originale:

Je viens de trouver ce comportement aussi, j'ai essayé d'ajouter les contraintes 1 par 1 et Xcode a en fait respecté la valeur 0.

Mes deux centimes.

déquin
la source
Oui, je viens de remarquer que dans les notes de version aussi, bravo.
mat
5

Je sais que ce n'est pas une solution, mais pour une solution temporaire pour vous empêcher de passer par toutes les contraintes, je viens de découvrir que vous obtenez le comportement souhaité si vous insérez «-0» au lieu de «0», mais vous devez en insérer une contrainte à chaque fois.

Gonçalo Gaspar
la source
c'est en fait une bonne option, ajouter un «-0» lorsque vous créez les contraintes sera «0» dans l'inspecteur, pas besoin d'aller là-bas et de les changer
busta117
1

Il n'y a en fait aucun moyen de résoudre ce problème en attendant

mais la meilleure solution temporaire est d'ajouter les contraintes à zéro une par une.

Ahmed Samir
la source
0

ignorer cela quand standard.

après l'avoir ajouté, cliquez sur contrainte (ligne bleue) et inspecteur pour contraindre l'attribut et définissez-le sur 0.

ça marche pour moi

Jirakit Paitoonnaramit
la source
0

Je rencontre toujours ce bogue (Xcode 11.3.1). Corrigé en ajoutant simplement les contraintes comme "standard", puis en cliquant sur les lignes de contrainte bleues et en définissant la "constante" sous l'inspecteur de taille à 0.

Jaskirat Singh
la source