2012-10-02 26 views
5

Hola Estoy usando este código para establecer la imagen de la sombra de mi barra de navegación:Proxy de apariencia: ¿alternativa a setShadowImage para iOS 5?

if ([self.navigationController.navigationBar respondsToSelector:@selector(shadowImage)]) { 

    [[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"nav-bar-shadow"]]; 

    [[UIToolbar appearance] setShadowImage:[UIImage imageNamed:@"tool-bar-shadow"] forToolbarPosition:UIToolbarPositionAny]; 
} 

Sin embargo, parece que esto es iOS 6 sólo (aunque no puedo decir con certeza - no puedo encontrar documentación acerca esto en cualquier lugar). No funciona en iOS 5.

¿Hay algún tipo de alternativa: configurar globalmente una imagen debajo de la barra de navegación? Pensé en UIView personalizado, pero ¿cómo hacer esto globalmente?

Respuesta

1

puede:

  1. Agregar una vista secundaria que contiene la imagen de la sombra de su viewController.view
  2. Agregar una vista secundaria que contiene la imagen de la sombra de su [[UIApplication sharedApplication] keyWindow], que agregará la imagen a nivel mundial en su ventana. Sin embargo, puede ponerse un poco feo, por ej. cuando se muestra un controlador de vista modal.
  3. Puede subclase UINavigationBar, hace algo de magia con subvistas allí y luego inicializar su navigationController través [[UINavigationController alloc] initWithNavigationBarClass:[YourNavBarSubclass class] toolbarClass:[UIToolbar class]]
0

ShadowImage es iOS6 solamente:

@property(nonatomic,retain) UIImage *shadowImage NS_AVAILABLE_IOS(6_0) UI_APPEARANCE_SELECTOR;