Xcode 9- "Restricciones de Ancho Fijo Pueden Causar Recorte" y Otras Advertencias de Localización


He descargado el nuevo Xcode y en Interface Builder estoy teniendo un montón de problemas con advertencias que dicen cosas como:

Las Restricciones De Ancho Fijo Pueden Causar Recorte

Se ve así:

introduzca la descripción de la imagen aquí

Tengo localización para varios idiomas y entiendo la advertencia de que en otro idioma el tamaño de una etiqueta puede cambiar, pero mi aplicación no tiene este problema. Corrí y lo probé en Xcode 8 ayer, estaba bien. No quiero para pasar horas y horas añadiendo nuevas restricciones sin sentido.

¿Alguna solución sugerida?

Author: Dave G, 2017-07-16

12 answers

Estaba recibiendo las mismas advertencias incluso sin múltiples idiomas en mi aplicación, lo que me llevó a averiguar lo que realmente estaba pasando. . .

Hay algunas cosas diferentes pasando aquí. Pude silenciar las advertencias de ancho fijo en mi propia aplicación cambiando el ancho de los espaciamientos de objetos de ancho fijo a mayor o igual o menor o igual.

Esto se puede hacer seleccionando el objeto en interface builder, yendo para el inspector de tamaño y cambiarlo allí:

introduzca la descripción de la imagen aquí


O bien, seleccione la restricción del esquema del documento, vaya al inspector de tamaño y cámbiela allí:

introduzca la descripción de la imagen aquí



En cuanto a la advertencia en la parte superior de su captura de pantalla:

Las restricciones iniciales y finales corregidas con una restricción de centro pueden causa recorte

Aquí hay una captura de pantalla de mi propia aplicación en la que estaba recibiendo el exactamente la misma advertencia:

introduzca la descripción de la imagen aquí

Hice que la etiqueta con el signo @ se pusiera al principio y al final de los botones, pero también para alinear el centro con la etiqueta de clasificación. Una vez que eliminé la restricción de alineación central, la advertencia desapareció, pero me quedé con un conjunto de objetos mal dispuestos.

Es entonces que me resigné a abrazar la Vista de Pila. Tan molesto como es de usar, cuando se obtiene todas las restricciones y configuración correcta, se presenta maravillosamente y sin advertencias.


Editar

Como Repose escribe en los comentarios, a veces simplemente agregar >= 0 será lo que necesita, ya que se está asegurando de que dos elementos no se superpongan.

 114
Author: Shades,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-19 13:43:22

Puede intentar deshabilitar "Respetar la dirección del idioma" por Restricción para silenciar la advertencia y ver si ayuda. Seleccione su restricción y abra Atributos / Inspector de tamaño. Por favor vea la imagen adjunta.

P. S. Esta solución funciona para iOS. Para macOS, intente > = o

Falta de Respeto Idioma Dirección

 50
Author: Repose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-27 00:46:02

Para etiquetas y botones que están localizados, esta advertencia tiene sentido y debe proporcionar las restricciones necesarias para que sus etiquetas no se superpongan. Si no se superponen ahora, es posible que en el futuro, por lo que no hará daño proporcionar las restricciones.

Xcode le ayuda a agregar estas restricciones automáticamente:

En el esquema del documento de su guión click en la flecha amarilla y elija "fijo líder" o "fijo final", dependiendo de si el texto de la pantalla (izquierda o derecha). Esto lo solucionará para la mayoría de los problemas.

Imagen

Si tiene este problema con un botón sin texto (solo imagen), intente eliminar el" título predeterminado " que aún podría estar configurado para el botón:

Imagen

 23
Author: Pascal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-16 14:32:43

Con Labels, puede establecer Lines es 0 y Autoshrink propiedades es Minimum Font Size para eliminar Fixed Width Constraints May Cause Clipping advertencias, así:

introduzca la descripción de la imagen aquí

 18
Author: Lionking,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-04 03:25:10

Para un UIButton cambiando el título de texto simple a texto atribuido también resolví mi problema: -

introduzca la descripción de la imagen aquí

 4
Author: dreamBegin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-25 04:59:33

Sé que esta pregunta ya ha sido respondida, pero lo que hice para corregir este error en mi caso fue agregar la propiedad "Relación de aspecto" y luego eliminar la restricción de ancho o altura.Esto funcionó bastante bien y fue menos esfuerzo, y logré mantener la misma salida y adaptar mi vista para los diferentes dispositivos.

 3
Author: reojased,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-18 04:50:32

Swift 4, Xcode 9.1 :

Sobre este problema, creo que su objeto no sabe cuál es la posición central correcta en el contexto de su superview, y usar remove, mayor que u otros ajustes de inicio/tratamiento la mayoría de las veces no funcionan correctamente. Primero, debe verificar las restricciones correctas de su superview.

Si su/s superview / s están correctamente configurados, puede intentar "explicar" a su objeto cuál es la posición correcta en la vista establecer la restricción "horizontalmente en contenedor":

introduzca la descripción de la imagen aquí

 2
Author: Alessandro Ornano,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-15 10:45:43

Tuve el mismo problema, pero cuando cambio a >= automáticamente establece la constante a 0, si elijo 60 por ejemplo, la advertencia aparece de nuevo. Así que estaba en un bucle con el problema.

Podría arreglar la incrustación de mi Label en un View

Editor > Embed In > View
{[14] {} En[4]} I conjunto Top, Bottom, Leading y Trailing con constant = 0

limitación

En View puse el constraints que estaba esperando antes.

 1
Author: Haroldo Gondim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-14 16:45:41

Tuve el mismo problema al pasar a Xcode 9 y encontré un enfoque que es útil para ciertos tipos de diseños. En mi caso, quería un encabezado de tabla en el que dos columnas (UILabels) fueran de ancho fijo y otra de ancho variable. Independientemente de cómo he especificado anchos de columna(incluyendo el uso de restricciones mayores o iguales en lugar de iguales, etc.), seguí recibiendo la advertencia sobre un posible recorte. En mi caso, quería que la columna de ancho variable (UILabel) se recortara si era necesario. Me podría haber ignorado la advertencia, pero no me gusta hacer eso.

El enfoque que funcionó aquí fue crear una UIView con restricciones de tamaño apropiadas e incrustar la etiqueta UILabel como una subview en la UIView. Entonces el truncamiento ocurre si es necesario y no recibo ninguna advertencia. Esto funciona tanto si UIView / embedded UILabel está en un StackView como si no.

Este es esencialmente el mismo enfoque que el de Haroldo Gondim, pero aquí se puede ver que también funciona con o sin StackView.

El la siguiente imagen muestra el enfoque, con y sin StackView. "SpacerName "es una UIView de ancho variable que contiene una etiqueta y" Spaceerpd " es una con un ancho fijo de 80. [Los colores no son significativos; solo están ahí para mostrar dónde están las vistas.]

introduzca la descripción de la imagen aquí

 1
Author: Tom Linton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-12 21:19:23

Como puedes ver en la imagen de abajo, estaba teniendo el error "Las restricciones de ancho fijo pueden Causar Recorte" porque aunque había configurado mi cuadro de texto para que estuviera centrado verticalmente y mi etiqueta para que tuviera una restricción de margen izquierdo, no había definido una restricción para el cuadro de texto en relación con la etiqueta, por lo que XCode me alertaba de que el cuadro de texto podría recortar (mostrarse arriba) la etiqueta.

introduzca la descripción de la imagen aquí

Después de agregar la restricción izquierda al cuadro de texto para permanecer siempre algunos distancia aparte de la etiqueta, el error se consideró resuelto por XCode y ya no me molestó con la advertencia de restricción.

 0
Author: Ulysses Alves,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-03 23:05:59

Tuve un problema similar al intentar tener el botón con los mismos rellenos desde los bordes de la súper vista.

Caso de error

He terminado usando horizontal center restricción y equal widths restricción a la super view.

Mi solución

 0
Author: Pei,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-28 03:17:48

Para Corregir El Error : Restricciones De Ancho Fijo Pueden Causar Recorte " y Otra Localización Debe seleccionar la vista / objeto, ir al "Mostrar Inspector de tamaño", encontrar la Restricción de ancho y establecer la Constante a Mayor o Igual a:

Inspector de Tamaño

Para corregir El Error : Falta la restricción inicial/final que puede causar superposición con otras vistas

Esto significa que la vista / objeto Xcode se queja, le falta un Principio o Final Restricción a una vista vecina.

Mientras mantiene el control, arrastre a una vista/objeto cercano a by

Contrl + PressClick

Agregar una Restricción Inicial o Final

Restricción Inicial / Final

 0
Author: Manny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-15 16:56:05