Solía usar autolayout agregar nuevas restricciones para hacer restricciones simples a la supervista / vista relativa de esta manera (por mucho tiempo):
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:
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:
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 constraint
para 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.
standard
valor (para que podamos establecer 10 o 0 en lugar dedefault = 8
), pero olvidé dónde está ahora. ¿O tal vez eliminaron la función?Respuestas:
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
, escriba0.01
. Esto evitará que el número cambie misteriosamente a "Estándar". Bien, entonces0.01
no es lo mismo,0
pero 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:
fuente
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
fuente
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
-0
el campo de restricción. Xcode parece descartar lo negativo y se comporta correctamente, lo cual es mejor que leer0.01
para 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.
fuente
Este comportamiento parece estar solucionado en Xcode 11.4: notas de la versión
Respuesta original
También encontré este comportamiento, intenté agregar las restricciones 1 por 1 y Xcode realmente respetó el valor 0.
Mis dos centavos.
fuente
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.
fuente
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.
fuente
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
fuente
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.
fuente