2012-07-16 5 views
5

Nel mio application:didFinishLauchginWithOptions: ho impostato l'aspetto predefinito per i miei controlli.Aspetto UIBarButtonItem Ho bisogno di un'eccezione

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

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

questo funziona grande per me in quanto dà UIBarButtonItems normali un aspetto piatto trasparente. Tuttavia c'è un pulsante I che viene presentato da un UIDocumentInteractionController quando si preme "quick look" che non ha l'aspetto giusto.

enter image description here

Credo che questo sia l'unico barbuttonitem che ho che è solo un'immagine. C'è un modo per modificare questo pulsante per dargli un po 'di contrasto, quindi non sembra così brutto? anche lo sfondo originale sembra ok sullo sfondo della mia barra di navigazione.

risposta

0

ho finito per attuare

documentInteractionControllerWillBeginPreview, documentInteractionControllerDidEndPreview

In willBegin Mantengo il tasto destro e tasto destro del set di navigationItem a zero. Lo faccio perché in passato la vista è già mostrata in modo da resettare l'aspetto non ha effetto fino al suo ritorno.

- (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; 
} 

Non è perfetto ma è molto meglio di quello che era. Se qualcuno è in grado di capire come gestire il controller di presentazione rightBarButtonItem, accetterò invece la risposta.