2012-07-13 11 views
13

Estoy deambulando cuando exactamente ¿se aplican las reglas de UIAppearance a algún nuevo controlador de vista?¿Cuándo se aplican las reglas de proxy de UIAppearance al nuevo controlador de vista?

He creado algunas reglas globales y las llamo en mi delegado de aplicaciones. De esta forma, todos los UIButtons tienen el mismo aspecto. Pero ahora quiero modificar solo la apariencia de un UIButton. Intenté poner el código para eliminar su fondo dentro de - (void)viewDidLoad pero no funciona: las reglas de UIAppearance aún no se aplican. En un ViewController puse el código de modificación dentro de - (void)viewWillLayoutSubviews y funcionó perfectamente, pero ahora en otro ViewController no funciona (el código es el mismo).

¿Dónde es seguro anular las reglas de UIAppearance?

Respuesta

13

De acuerdo con el video WWDC 2011 que presenta UIAppearance, las personalizaciones se aplican justo antes de llamar a -layoutSubviews en la vista.

1

Si usted está mirando para personalizar un botón específico que deberán:

  1. alterar las propiedades de la instancia de botón directamente, y no toque los parámetros de aspecto para la clase, o

  2. utilice el método appearanceWhenContainedIn:, como a continuación:

    [[UIButton appearanceWhenContainedIn:[CustomView class], nil] 
    setBackgroundImage:myButtonImage 
          forState:UIControlStateNormal]; 
    

De esta forma, puede usar el proxy de apariencia para su botón específico (cuando sepa que está contenido en una vista específica) y no alterar la configuración general de apariencia.

Cuestiones relacionadas