Hemos extendido UILabel para poder aplicar fuentes y colores estándar para todos los usos de un tipo de etiqueta determinado en nuestras aplicaciones. P.ej.UIAppearance no tiene efecto en UILabels creado programáticamente
@interface UILabelHeadingBold : UILabel
@end
En nuestra AppDelegate, aplicamos fuentes y colores como esto
[[UILabelHeadingBold appearance] setTextColor:<some color>];
[[UILabelHeadingBold appearance] setFont:<some font>];
Al añadir un UILabel en nuestros de XIB, ahora puede seleccionar la clase a ser de tipo UILabelHeadingBold, y funciona como se esperaba . La etiqueta se muestra con la fuente y el color correctos, tal como se especifica en nuestro AppDelegate.
Sin embargo, si creamos una etiqueta mediante programación, p. Ej.
UILabelHeadingBold *headingLabel = [[UILabelHeadingBold alloc] initWithFrame:CGRectMake(10, 10, 100, 30)];
[self.mainView addSubview:headingLabel];
UILabel no obtiene la fuente/color esperados. Tenemos que aplicar manualmente estos atributos.
¿Hay alguna manera de hacer que UIAppearance tenga efecto en los elementos de UI creados por programación, o solo funciona cuando se usa dentro de los XIB?
Es * no * a veces trabajan para UILabels creados en código también, pero los resultados son inconsistentes, y el comportamiento es diferente entre iOS 5 y, bueno, ya sabes. Así que simplemente no use 'UIAppearance' para personalizar' UILabel's –
+1 para la información, que no soy el único que obtiene resultados inconsistentes (me tomó horas de codificación hasta que encontré su comentario). +1 para la solución robert.wijas, que uso ahora, y todo está bien. – anneblue