Tengo algunas propiedades de apariencia personalizada en mi clase de vista (un descendiente de UIView
). Quiero personalizar la apariencia vista de acuerdo con estas propiedades, pero no puedo hacer eso dentro de la inicialización, ya que los valores ajustados con [[MyClass appearance] setFoo:…]
no están en vigor en ese momento:¿Cuándo puedo comenzar a usar las propiedades establecidas usando UIAppearance?
@interface View : UIView
@property(strong) UIColor *someColor UI_APPEARANCE_SELECTOR;
@end
@implementation View
@synthesize someColor;
// Somewhere in other code before the initializer is called:
// [[View appearance] setSomeColor:[UIColor blackColor]];
- (id) initWithFrame: (CGRect) frame
{
self = [super initWithFrame:frame];
NSLog(@"%@", someColor); // nil
return self;
}
@end
Ya se establecen en layoutSubviews
, pero ese no es un buen punto para realizar las personalizaciones de vista, ya que algunas personalizaciones pueden disparar layoutSubviews
nuevamente, lo que lleva a un bucle infinito.
Entonces, ¿cuál es un buen punto para realizar las personalizaciones? ¿O hay una forma de activar el código que aplica los valores de apariencia?
Creo que una vez que se ha asignado la clase personalizada, siempre se puede acceder y modificar las propiedades del miembro según los requisitos y luego se puede usar el objeto con la información modificada en el código. –
Solo para asegurarme, estoy hablando de las propiedades establecidas a través del proxy de apariencia ('UIAppearance'). Estos valores se establecen más adelante que en el inicializador. Si configuro un punto de interrupción en el conjunto de propiedades, puedo ver que los valores se aplican desde '[CALayer layoutSublayers] '. – zoul