Pregunta Etiqueta de configuración de Xcode 9 con 0 líneas a una altura de 14,600.5 en vista de pila


En Xcode 9, estoy siguiendo el tutorial de AppCoda para comenzar con el desarrollo de iOS. Observé un comportamiento extraño y me pregunto si esto es un error o algo que no entiendo con las vistas de pila en Interface Builder (ya que la aplicación se compila y muestra correctamente en mi teléfono).

Cuando coloco la etiqueta y la establezco como el tercer elemento en la vista de pila, un hermano de otras dos vistas de pila anidadas, parece correcto si se usan los atributos predeterminados. Sin embargo, cuando cambio la propiedad de líneas de 1 a 0, la etiqueta y la vista de pila adyacente desaparecen del constructor de interfaz.

Before

After

En el inspector de tallas, las coordenadas de la etiqueta cambiaron de 0,208.5 a 0, -90. Si cambio estas propiedades, la altura de la etiqueta cambia de 0,0 a 375,14600.5, y Xcode arroja un error: Interface Builder no admite tamaños de UILabel mayores de 10,000 por 10,000.

¿Es esto un error con Xcode, o hay algún comportamiento cambiado con el atributo de líneas para esta versión de Xcode (el libro cubre actualmente Xcode 8).


10
2017-09-20 20:01


origen


Respuestas:


Aquí hay una solución. Seleccione la vista de etiqueta y vaya al inspector de tamaño. Debajo de las preferencias de etiqueta, marque la casilla de tamaño explícito. Esto evita que la vista de pila se colapse cuando coloca una etiqueta de varias líneas en ella.


16
2017-09-22 11:24



Establecer inspector de tamaño> Tamaño intrínseco> Marcador de posición, establecer el ancho en ninguno y la altura para decir 30

De la descripción: Establecer un tamaño de contenido intrínseco en el tiempo de diseño solo afecta a una vista mientras se edita en el Creador de interfaz. La vista no tendrá este tamaño de contenido intrínseco en tiempo de ejecución.

Desde la Ayuda de Xcode: utilice un tamaño intrínseco de marcador de posición para indicar el ancho y alto de una vista y evite la ambigüedad de restricción de tiempo de diseño.


4
2018-01-17 08:00



Este es un error en Xcode 9 - ver https://github.com/lionheart/openradar-mirror/issues/18779. Solo parece afectar cómo se dibuja el lienzo en Xcode: al menos para mí, mi aplicación sigue construyendo correctamente. Lo vi por primera vez después de actualizar a 9.0.1 desde 9.0, y Xcode 9.1 todavía tiene el error. Me degradaron a 9.0, que no parece tener este error.

Esto ha sido reportado como error 30484038 en el Bug Reporter de Apple (bugreport.apple.com) - Informé un error similar y me respondieron que era un duplicado de 30484038. Ese error aún está marcado como "abierto". He preguntado si hay una solución temporal o un tiempo esperado hasta que se solucione, pero aún no han respondido con una respuesta.

Intentaré establecer un tamaño explícito para el efecto de UILabels para ver si eso sirve como una solución alternativa.

ACTUALIZACIÓN: Este error parece estar solucionado en Xcode 9.3. En mi caso, Xcode ahora dibuja las etiquetas correctamente cuando la propiedad de las líneas está configurada en 0. Además, en las notas de la versión de 9.3 encontré esto en Interface Builder, Resolved Issues:

Las barras de herramientas o las etiquetas de líneas múltiples en las vistas de la pila ya no producen una desalineación del diseño automático en el lienzo. Este problema generó problemas como etiquetas multilínea de ancho cero o barras de herramientas extragrandes cuando se seleccionó un iPhone X en la barra del dispositivo. (35377301)


1
2017-11-12 21:14



En xib, simplemente establezca una restricción de altura temporal para la etiqueta (como 100) y elimínela. Mostrará la altura que acaba de configurar (solo la altura de la pantalla, no la altura real).


0
2018-01-18 09:38



Creo que es porque tu etiqueta de texto es demasiado larga.

Documentos de numberOfLines

Esta propiedad controla la cantidad máxima de líneas para usar con el fin de   ajuste el texto de la etiqueta en su rectángulo delimitador. El valor predeterminado   para esta propiedad es 1. Para eliminar cualquier límite máximo, y usar tantos   líneas según sea necesario, establezca el valor de esta propiedad en 0.

Básico en sus restricciones, su etiqueta no cabe en la vista de pila. Te sugiero que dividas tu gran UILabel en pedazos más pequeños.


-2
2017-09-20 20:32