Xcode 6 tiene una nueva característica donde fuentes y tamaños de fuente en UILabel
, UITextField
y UIButton
se pueden ajustar automáticamente en función de la clase de tamaño de la configuración actual del dispositivo, justo en el guión. Por ejemplo, puede configurar a UILabel
para usar el tamaño de fuente 12 en configuraciones de "cualquier ancho, altura compacta" (como en iPhones en horizontal) y el tamaño 18 en configuraciones de "ancho normal, altura normal" (como en iPads ). Más información está disponible aquí:
developer.apple.com/size_class
En teoría, esta es una gran característica porque podría hacer que no sea necesario configurar mediante programación diferentes fuentes en las características de la interfaz de usuario según la configuración del dispositivo. En este momento, tengo un código condicional que establece las fuentes según el tipo de dispositivo, pero obviamente, eso significa que tengo que configurar las fuentes mediante programación en todas partes de la aplicación. Así que inicialmente estaba muy emocionado con esta función, pero descubrí que tiene un problema severo de uso real para mí (tal vez un error). Tenga en cuenta que estoy construyendo contra SDK 8 y estableciendo un objetivo de implementación mínimo de iOS 8 , por lo que esto no tiene nada que ver con la compatibilidad con versiones anteriores de iOS.
El problema es el siguiente: si establezco diferentes tamaños de fuente para diferentes clases de tamaño y uso la fuente "Sistema" proporcionada por iOS , todo funciona como se esperaba y los tamaños de fuente cambian según la clase de tamaño. Si uso una fuente personalizada proporcionada por mi aplicación (sí, la he configurado correctamente en mi paquete de aplicaciones, ya que funciona mediante programación) y configuro la fuente personalizada en una etiqueta en un guión gráfico de XCode 6 , eso también funciona como se esperaba. Pero cuando trato de usar diferentes tamaños de la fuente personalizada para diferentes clases de tamaño, en el guión gráfico, de repente no funciona. La única diferencia en la configuración es la fuente que he elegido (una personalizada frente a la fuente del sistema). En cambio, todas las fuentes aparecen en ladispositivo y simulador como la fuente predeterminada del sistema en el tamaño predeterminado , independientemente de la clase de tamaño (y verifiqué a través del depurador que está sustituyendo la fuente del sistema por la real especificada en el guión gráfico). Básicamente, la característica de clase de tamaño parece estar rota para fuentes personalizadas. Además, curiosamente, las fuentes personalizadas realmente se muestran y ajustan el tamaño correctamente en el panel "Vista previa" de XCode 6 para el controlador de vista: deja de funcionar solo cuando se ejecuta en el sistema iOS real (lo que me hace pensar que lo estoy configurando correctamente) .
Probé varias fuentes personalizadas diferentes, y no parece funcionar para ninguna de ellas, pero siempre funciona si uso "Sistema" en su lugar.
De todos modos, ¿alguien más ha visto este problema en Xcode 6 ?
Cualquier idea sobre si esto es un error en iOS 8, Xcode o algo
Estoy haciendo mal
La única solución que he encontrado, como dije, es continuar configurando las fuentes mediante programación como lo he hecho para aproximadamente tres versiones de iOS porque eso funciona.
Pero me encantaría poder utilizar esta función si pudiera hacer que funcione con fuentes personalizadas. El uso de la fuente System no es aceptable para nuestro diseño.
INFORMACIÓN ADICIONAL: A partir de Xcode 8.0, el error está corregido.