Xcode 11 agrega nuevas restricciones conjunto cero: use el valor establecido en lugar de predeterminado / estándar

74

Solía ​​usar autolayout agregar nuevas restricciones para hacer restricciones simples a la supervista / vista relativa de esta manera (por mucho tiempo):

ingrese la descripción de la imagen aquí

Sin embargo, recientemente después de actualizar al último código x (11.3.3 o solo 11.3 / 11C29), tengo este extraño problema: cuando configuro la constante = 0, siempre generan las restricciones de una manera no deseada como esta:

ingrese la descripción de la imagen aquí

Y parece que el valor predeterminado es de alguna manera 20 y hace que mi vista se vea tan mal (¿0 en comparación con 20?)

Si lo soluciono editando la restricción de esta manera:

ingrese la descripción de la imagen aquí

Luego se corregirá nuevamente (la imagen se edita después de las restricciones, antes de editar se muestra constante = Standard)

Ni siquiera sé cómo describir el problema, pero ¿cómo soluciono esto nuevo add new constraintpara usar mi punto de deseo en lugar de estándar / predeterminado?

Actualizar:

Parece que solo sucedió cuando la restricción a la supervista. No tengo idea de cómo solucionarlo.

Actualización 01-abr -2020:

Xcode11.4 solucionó esto.

Eddie
fuente
2
El mismo problema aqui. Creo que esto apareció por primera vez cuando actualicé a la UPD 11.3: el mismo proyecto no tiene este problema en otra máquina con la misma versión de xcode. Tal vez esté relacionado con la configuración IDE o tal vez sea un error del propio IDE.
Dmitrij Rogov
1
Mismo problema aquí. Usando Xcode 11.3 (11C29).
user525504
1
Mismo problema Versión 11.3 (11C29)
usuario832
1
@DmitrijRogov Recordé algunas veces antes (xcode 8,9 o 10), hay una configuración en algún lugar que nos ayuda a definir el standardvalor (para que podamos establecer 10 o 0 en lugar de default = 8), pero olvidé dónde está ahora. ¿O tal vez eliminaron la función?
Eddie
55
Esto me está volviendo loco
Buyin Brian

Respuestas:

37

Parece un error (no te olvides de archivar con Apple). Aquí hay una solución simple:

Cuando complete el número en el "popover", en lugar de escribir 0, escriba 0.01. Esto evitará que el número cambie misteriosamente a "Estándar". Bien, entonces 0.01no es lo mismo, 0pero está lo suficientemente cerca como para que no puedas notar la diferencia, y al menos no tienes que regresar y cambiarla más tarde.

EDITAR Apple dice que este error se solucionará en Xcode 11.4:

Se corrigió un error que impedía ingresar una constante 0 en los editores emergentes de restricciones. (54076090)

mate
fuente
1
buen trabajo, gracias!
Eddie
1
¡Excelente! Qué molesto puede ser este problema ...
Joaquín Pereira
Funciona bien cuando uso 0.01 en lugar de 0
Teja
Pero establecerlo en 0 la segunda vez funciona. ¿Por qué molestarse con 0.01? Es bastante molesto de todos modos. Lo bueno es que es un error y no una "característica".
Vlad Rusu
11

Mientras que la solución alternativa @matt funciona, solo quiero agregar que puede establecerla en 0.01 y luego cambiarla a 0, no volverá a cambiar al valor estándar nuevamente. Nota: Xcode 11.3

chhay sotheara
fuente
Para mí, cuando lo cambio de nuevo a 0, cambia a "estándar" nuevamente. Xcode 11.3.1.
John Scalo
10

A partir de Xcode 11.3.1:

La solución más limpia y rápida que he encontrado es la siguiente:

Simplemente escriba en -0el campo de restricción. Xcode parece descartar lo negativo y se comporta correctamente, lo cual es mejor que leer 0.01para todo.

Puede insertar todas las restricciones a la vez, sin tener que hacer una a la vez o ir y editar más tarde.

Xcode muestra los valores como este

Parece un comportamiento realmente tonto. ¿Hay alguna razón por la que Apple podría haberlo hecho hacer esto deliberadamente ...?

Editar: Esto no parece funcionar todo el tiempo , lo cual es frustrante. Acabo de tener un UIImageView show 0 a Superview, pero aún visualmente estoy en el valor predeterminado (20). Esto realmente parece un error con el IB ya que el comportamiento es totalmente ilógico.

Dave Y
fuente
9

Este comportamiento parece estar solucionado en Xcode 11.4: notas de la versión

Se corrigió un error que impedía ingresar una constante 0 en los editores emergentes de restricciones. (54076090)


Respuesta original

También encontré este comportamiento, intenté agregar las restricciones 1 por 1 y Xcode realmente respetó el valor 0.

Mis dos centavos.

dequin
fuente
Sí, también me di cuenta de eso en las notas de lanzamiento, bien hecho.
mate
5

Sé que esto no es una solución, pero para una solución temporal que evite que pases por todas las restricciones, descubrí que obtienes el comportamiento deseado si insertas '-0' en lugar de '0', pero tienes que insertar uno restricción cada vez.

Gonçalo Gaspar
fuente
esta es en realidad una buena opción, agregar un '-0' cuando cree las restricciones será '0' en el inspector, no es necesario ir allí y cambiarlas
busta117
1

En realidad, no hay forma de resolver este problema mientras tanto

pero la mejor solución temporal es agregar las restricciones con cero una por una.

Ahmed Samir
fuente
0

ignóralo cuando sea estándar.

después de agregarlo, haga clic en restringir (línea azul) e inspector para restringir el atributo y establecerlo en 0.

ese trabajo para mi

Jirakit Paitoonnaramit
fuente
0

Todavía experimenta este error (Xcode 11.3.1). Se solucionó simplemente agregando las restricciones como "estándar", luego haciendo clic en las líneas de restricción azules y estableciendo el "constante" bajo el inspector de tamaño en 0.

Jaskirat Singh
fuente