2012-07-16 22 views
5

En mi application:didFinishLauchginWithOptions: configuré las apariencias predeterminadas para mis controles.apariencia UIBarButtonItem Necesito una excepción

UIImage *transparentImage = [UIImage imageNamed:@"transparent.png"]; 

[[UIBarButtonItem appearance]setBackgroundImage:transparentImage 
             forState:UIControlStateNormal 
            barMetrics:UIBarMetricsDefault]; 

esto funciona muy bien para mí, ya que le da a UIBarButtonItems normales una apariencia plana transparente. Sin embargo, hay un botón I que se presenta desde UIDocumentInteractionController al presionar "vista rápida" que no tiene la apariencia correcta.

enter image description here

Creo que este es el único barbuttonitem tengo que es sólo una imagen. ¿Hay alguna manera de que pueda modificar este botón para darle un poco de contraste para que no se vea tan feo? incluso el fondo original se ve bien en contra de mi fondo naviagationbar.

Respuesta

0

que terminó la implementación

documentInteractionControllerWillBeginPreview, documentInteractionControllerDidEndPreview

En willBegin conservo el botón derecho y el botón de la derecha conjunto de navigationItem a cero. Lo hago porque en fin, la vista ya está mostrada, por lo que restablecer la apariencia no se aplicará hasta que se vuelva a agregar.

- (void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller 
{ 
    [[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:nil forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 

    self.rightButton = self.navigationItem.rightBarButtonItem; 
    self.navigationItem.rightBarButtonItem = nil; 
} 

- (void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller 
{ 
    UIImage *transparentImage = [UIImage imageNamed:@"transparent.png"]; 
    [[UIBarButtonItem appearance] setBackgroundImage:transparentImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:transparentImage forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault]; 
    [[UIBarButtonItem appearance] setBackgroundImage:transparentImage forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 

    self.navigationItem.rightBarButtonItem = self.rightButton; 
} 

No es perfecto, pero es mucho mejor de lo que era. Si alguien puede entender cómo manejar el controlador actual rightBarButtonItem, aceptaré su respuesta.

Cuestiones relacionadas