2012-07-16 9 views
5

In meinem application:didFinishLauchginWithOptions: ich die Standardeinstellungen für meine Steuerelemente festlegen.UIBarButtonItem Aussehen Ich brauche eine Ausnahme

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

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

das funktioniert gut für mich, da es normalen UIBarButtonItems ein transparentes flaches Aussehen gibt. Allerdings gibt es eine Taste I, die von einer UIDocumentInteractionController präsentiert wird, wenn Sie "Quick Look" drücken, die nicht das richtige Aussehen hat.

enter image description here

Ich glaube, dies ist die einzige barbuttonitem ich habe, ist, dass nur ein Bild ist. Gibt es eine Möglichkeit, diesen Knopf zu verändern, um ihm etwas Kontrast zu geben, damit er nicht so hässlich aussieht? Sogar der ursprüngliche Hintergrund sieht auf meinem Navigationsbalken gut aus.

Antwort

0

landete ich

documentInteractionControllerWillBeginPreview, documentInteractionControllerDidEndPreview

Implementierung bis

In willBegin ich die richtige Taste und stellen navigationItem rechte Taste auf Null zu halten. Ich mache das, weil in didEnd die Ansicht bereits angezeigt wird, so dass das Zurücksetzen der Darstellung erst dann wirksam wird, wenn sie hinzugefügt wurde.

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

Es ist nicht perfekt, aber es ist viel besser als es war. Wenn jemand herausfinden kann, wie man mit dem rightBarButtonItem des präsentierenden Controllers umgeht, werde ich stattdessen deine Antwort akzeptieren.