El ancho de diseño Máximo Preferido automático no está disponible en las versiones de iOS anteriores a la 8.0
Abrí un proyecto iOS existente con Xcode6 beta6, y Xcode enumera la siguiente advertencia para los archivos Storyboard y Xib:
El Ancho de diseño Máximo Preferido automático no está disponible en las versiones de iOS antes de 8.0
Traté de abordar la advertencia estableciendo el ancho como explícito como a continuación:
Sin embargo, esto no resolvió las advertencias. ¿Cómo se pueden eliminar?
10 answers
Actualizar 3:
Esta advertencia también se puede activar con etiquetas que tienen numberOfLines
establecido en cualquier cosa menos 1 si su destino de implementación está establecido en 7.1. Esto es completamente reproducible con el nuevo proyecto de vista única.
Pasos para reproducir:
- Crear un nuevo proyecto de vista única, objective-c
- Establezca el Destino de implementación en 7.1
- Abra el storyboard del proyecto
- Coloque una etiqueta en el controlador de vista proporcionado
- Establecer el número de líneas para esa etiqueta a 2.
- Compilar
He archivado el siguiente radar:
rdar: / / problem / 18700567
Actualizar 2:
Desafortunadamente, esto es una cosa de nuevo en la versión de lanzamiento de Xcode 6. Tenga en cuenta que puede, en su mayor parte, editar manualmente su storyboard/xib para solucionar el problema. Por Charles A. en los comentarios a continuación:
Vale la pena mencionar que puedes fácilmente accidentalmente introducir esta advertencia, y la advertencia en sí no ayuda a encontrar la etiqueta que es el culpable. Esto es desafortunado en un complejo storyboard. Puede abrir el guion gráfico como un archivo de origen y buscar con la expresión regular
<label(?!.*preferredMaxLayoutWidth)
para encontrar etiquetas que omita un atributo/valor preferredMaxLayoutWidth. Si añades preferredMaxLayoutWidth = " 0 " en tales líneas, es lo mismo que marcar explicit y estableciendo el valor 0.
Actualizar 1:
Este error ha sido corregido en Xcode 6 GM.
Original Respuesta
Este es un error en Xcode6-Beta6 y XCode6-Beta7 y puede ser ignorado de forma segura por ahora.
Un ingeniero de Apple en los foros de desarrolladores de Apple tenía esto para decir sobre el error:
Preferred max layout width es una propiedad de diseño automático en UILabel que le permite crecer verticalmente automáticamente para adaptarse a su contenido. Versiones de Xcode anteriores a 6.0 establecerían preferredMaxLayoutWidth para etiquetas multilínea al tamaño actual de los límites en el momento del diseño. Usted gustar necesidad de actualizar manualmente preferredMaxLayoutWidth en tiempo de ejecución si su diseño horizontal cambiado.
IOS 8 agregado soporte para computación automática preferredMaxLayoutWidth en tiempo de ejecución, lo que hace que la creación de multilínea etiquetas aún más fáciles. Esta configuración no es compatible con iOS 7. Para admitir iOS 7 e iOS 8, Xcode 6 le permite elegir "Automático" o "Explícito" para preferredMaxLayoutWidth en el tamaño inspector. Usted debe:
Elige "Automático" si se dirige a iOS 8 para la mejor experiencia. Recoger "Explícito" si la orientación es
La advertencia aparecerá si (1) está utilizando auto layout, (2) "Automático" está configurado para una etiqueta multilínea [puede comprobarlo en el inspector de tamaño para la etiqueta], y (3) su destino de implementación
Parece Que el error es que esta advertencia aparece para no autodiseño documento. Si está viendo esta advertencia y no está utilizando el diseño automático puede ignorar la advertencia.
Alternativamente, puede solucionar el problema utilizando el inspector de archivos en el guion gráfico o xib en cuestión y cambiar "Compilaciones para" a " Compilaciones para iOS 8.0 y versiones posteriores"
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-05-23 12:02:39
Para Encontrar la etiqueta del problema en un guion gráfico grande, siga mis pasos a continuación.
- En el Navegador de problemas de xCode, haga clic derecho en el error y seleccione "Revelar en el registro". (Nota: @Sam sugiere a continuación, busque en xCode report navigator. También @Rivera señala en los comentarios que "A partir de Xcode 6.1.1, al hacer clic en la advertencia se abrirá automáticamente y resaltará la etiqueta en conflicto". No he probado esto).
- Esto mostrará el error con un código al final de su archivo de guión gráfico. Copia el valor después .storyboard
A continuación, revela tu storyboard como archivo fuente.
Busca. Usted debe ser capaz de decir qué etiqueta es desde aquí con bastante facilidad mirando el contenido.
Una vez que encuentre la etiqueta, la solución que funcionó para mí fue establecer el "ancho preferido" en 0.
Por cierto, siempre puede obtener rápidamente el id de una interfaz elemento seleccionando el elemento y mirando debajo del inspector de identificación. Muy práctico.
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
2015-06-27 19:36:44
Puede solucionar este problema sin abrir el guion gráfico como fuente. Esta advertencia se activa por UILabels si numberOfLines !=1 y el objetivo de implementación es
¿CÓMO ENCONTRARLO?
-
Vaya a Issue Navigator (CMD + 8) y Seleccione latest built con la advertencia
-
Localice la(s) advertencia (s) (busque "Diseño máximo Preferido automático") y presione el botón expandir a la derecha
-
Encuentra el Objeto ID del UILabel
- Abra el Storyboard y BUSQUE (CMD+f) el objeto. SELECCIONARÁ Y RESALTARÁ la etiqueta UILabel
- Set Preferred Width = 0"Explicit" as others suggested
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
2015-07-01 18:58:28
Solución es bastante simple
Solo habilita Compilaciones para iOS 8 y Posteriores
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
2015-07-19 10:27:45
Ahora mi versión de Xcode es 6.1. Pero también recibí esta advertencia. me molesta mucho . después de buscar una y otra vez.Encontré la solución.
Razón:Debe haber establecido sus líneas UILabel > 1 en su guion gráfico.
Solución: establezca su atributo UILabel Lines en 1 en Storyboard. reinicia tu Xcode. Funciona para mí, espero que pueda ayudar a más personas.
Si realmente necesitas mostrar tus palabras más de 1 línea. deberías hacerlo en el código.
//the words will show in UILabel
NSString *testString = @"Today I wanna set the line to multiple lines. bla bla ...... Today I wanna set the line to multiple lines. bla bla ......"
[self.UserNameLabel setNumberOfLines:0];
self.UserNameLabel.lineBreakMode = NSLineBreakByWordWrapping;
UIFont *font = [UIFont systemFontOfSize:12];
//Here I set the Label max width to 200, height to 60
CGSize size = CGSizeMake(200, 60);
CGRect labelRect = [testString boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName] context:nil];
self.UserNameLabel.frame = CGRectMake(self.UserNameLabel.frame.origin.x, self.UserNameLabel.frame.origin.y, labelRect.size.width, labelRect.size.height);
self.UserNameLabel.text = testString;
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
2014-11-06 03:31:20
Para resumir, para mí seguir las dos instrucciones anteriores para cambiar cualquier instancia donde numberOfLines = 0 a 1 o mayor, y agregar manualmente preferredMaxLayoutWidth="0" a cada instancia de una etiqueta dentro de la fuente del guion gráfico arregló todas mis advertencias.
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
2014-12-09 15:48:54
Dado que no tengo una reputación 50 Stackoverflow no me deja comentar sobre la segunda mejor respuesta. Encontré otro truco para encontrar la etiqueta culpable en el guion gráfico.
Así que una vez que conozca el id de la etiqueta, abra su guion gráfico en una pestaña separada con los controladores de vista mostrados y simplemente haga el comando F y el comando V y lo llevará directamente a esa etiqueta:)
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
2015-02-07 01:59:33
Lo conseguí trabajando seleccionando el diseño original que tenía en la selección W / H. Storyboard está funcionando como se esperaba y el error ha desaparecido.
Asegúrese también de que está desarrollando para iOS 8.0. Compruebe que desde la configuración general del proyecto.
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
2014-08-22 14:39:21
Tuve este problema y pude solucionarlo agregando restricciones para determinar el máximo con para una etiqueta.
Cuando se suelta una etiqueta multilínea, no hay una restricción establecida para imponer el ancho dentro de la vista padre. Aquí es donde el nuevo PreferredMaxWidth entra en juego. En iOS 7 y anteriores tienes que definir el ancho máximo tú mismo. Simplemente agregué una restricción de 10px al lado izquierdo y derecho de la etiqueta.
También puede agregar una restricción
Así que esto no es realmente un error, simplemente tiene que definir el ancho máximo usted mismo. La opción mención explícita en otra respuesta también funcionará cuando esté configurando este valor de ancho, sin embargo, tendrá que modificar este valor si desea que el ancho máximo cambie en función del ancho principal (ya que ha establecido explícitamente el ancho).
Mi solución anterior asegura que el ancho siempre se mantenga sin importar cuán grande sea la vista padre.
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
2015-02-18 13:29:04
Por alguna razón, incluso si se cambia el destino de implementación de iOS a 8.0 o superior, los archivos Xib no adoptan ese cambio y permanecen con la configuración anterior en el inspector de archivos
Por lo tanto, debe cambiarlo manualmente para cada Xib
Una vez hecho esto, la advertencia desaparecerá: -)
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
2016-03-01 12:23:21