2012-11-15 18 views
5

ich den folgenden Code verwenden, um die Zurück-Schaltfläche in der Navigationsleiste während meiner Anwendung anpassen:Customized Zurück-Taste erscheint auf UIImagePickerController

UIImage *backButton = [[UIImage imageNamed:@"backButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
UIImage *backButtonOn = [[UIImage imageNamed:@"backButton_on"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButton 
                forState:UIControlStateNormal 
               barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonOn 
                forState:UIControlStateHighlighted 
               barMetrics:UIBarMetricsDefault]; 

Es funktioniert toll, außer wenn ich einen UIImagePickerController präsentieren und ein Album auf dem Foto eingeben Bibliothek Die Zurück-Schaltfläche ist auch die benutzerdefinierte Zurück-Schaltfläche. Wie kann ich die ursprüngliche Zurück-Schaltfläche in der Bildauswahl wiederherstellen?

Antwort

4

Versuchen Sie dies mit:

[[UINavigationBar appearanceWhenContainedIn:[YourClassThatsNotAUIImagePicker class], nil] setBackButtonBackgroundImage:someOtherImage forBarMetrics:UIBarMetricsDefault]; 

Das Ihr Aussehen Einstellung nur auf die Klassen begrenzen sollten Sie auflisten und damit die UIImagePickerController allein lassen.

+0

löste ich das Problem, indem Sie eine benutzerdefinierten UINavigationBar Unterklasse zu schaffen und verwenden das in meiner Navigationssteuerung. Dann habe ich die vorgeschlagene '[UINavigationBar appearanceWhenContainedIn: [MyNavigationBar Klasse], nil]' Methode. Auf diese Weise musste ich nur meine Navigationsleiste hinzufügen. War eine schnelle Lösung, danke. – SolidSun

9
[[UIBarButtonItem appearanceWhenContainedIn:[UIImagePickerController class], nil] setBackButtonBackgroundImage:[UIImage imageNamed:@"blank-button"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

dies ist der richtige Weg

+0

Definitiv die beste Antwort hier. –

0

1.for schnell und ios9 (die obige Antwort sein wird) -

UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UIImagePickerController.self]).setBackButtonBackgroundImage(UIImage(named: "blank-button"), forState: UIControlState.Normal, barMetrics: UIBarMetrics.Default) 

2.if Sie backIndicatorImage von UINavigationBar ändern möchten

UINavigationBar.appearanceWhenContainedInInstancesOfClasses([UIImagePickerController.self]).backIndicatorImage = UIImage(named: "backButton")//or nil 

3.wenn Sie ändern möchten backIndicatorTransitionMaskImage

UINavigationBar.appearanceWhenContainedInInstancesOfClasses([UIImagePickerController.self]).backIndicatorTransitionMaskImage =UIImage(named: "backButton")// nil 
+0

'UINavigationBar' Aussehen funktioniert nicht, wenn sie in' UIImagePickerController' enthalten. 'UIBarButtonItem' funktioniert einwandfrei. – kelin