1

Also ich versuche, ein universelles Back-Button-Bild für jedes Mal, wenn der Back-Pfeil in der UINavigationController erscheint. Jedes Mal, wenn ich versuche zu implementieren, wird das Bild jedoch verzerrt und vergrößert. Das Originalbild ist ein einfacher Rückwärtspfeil. Doch die Zurück-Taste Bild (funktioniert das universell) wird immer wie gezeigt schräg:So erstellen Sie eine universelle benutzerdefinierte UINavigationBar Zurück-Taste, ohne das Bild zu verzerren

UINavigationBar with Custom Back Button

Ich habe versucht, den folgenden Code in meinem AppDelegate mit - noch kein Glück.

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  

    // Attempt 1 
    [[UIBarButtonItem appearance] 
    setBackButtonBackgroundImage:[UIImage imageNamed:@"Back"] 
    forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

    // Attempt 2 
    UIImageView *buttonBack = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; 
    buttonBack.image = [UIImage imageNamed:@"Back"]; 
    [[UIBarButtonItem appearance] 
    setBackButtonBackgroundImage:buttonBack.image 
    forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
} 

Jede Hilfe sehr geschätzt werden würde! Vielen Dank.

Antwort

0

Sie müssen den ContentMode der UIImageView Ihrer Zurück-Schaltfläche festlegen.

Verwenden Sie diesen Code, um das Bild setzen Sie die UIImageView Rahmen zu passen und halten es ist Seitenverhältnis des Bildes:

// Attempt 2 
UIImageView *buttonBack = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; 
buttonBack.image = [UIImage imageNamed:@"Back"]; 
// this line sets the aspect mode 
buttonBack.contentMode = UIViewContentModeScaleAspectFit; 
[[UIBarButtonItem appearance] 
setBackButtonBackgroundImage:buttonBack.image 
forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
+0

leider immer noch das gleiche Problem mit Ihrer Lösung zu erfahren. Sogar versucht, das korrekte CGRectMake zu setzen: 'initWithFrame: CGRectMake (0, 0, 16, 16)]' (16 x 16 ist die Symbolgröße). Erscheint immer noch wie im Original-Screenshot. –

+0

Haben Sie versucht, die UIImageView als benutzerdefinierte Ansicht des UIBarButtonItem anstelle von backgroundImage festzulegen? –

+0

Ich versuchte mit dem folgenden Code, aber wurde mit einem Absturzfehler konfrontiert: ** 1. ** "UIView * BackButtonView;" ** 2. ** "BackButtonView.backgroundColor = [[UIColor Alloc] InitWithPatternImage: [UIImage imageNamed: @ "Zurück"]]; '** 3. **' [[UIBarButtonItem Aussehen] setCustomView: BackButtonView]; '(Zahlen stehen für Zahlenzeilen) –

0

Die Antwort war viel einfacher als erwartet. Fallen einige der zusätzlichen Code und es trimmen sich auf seine Barebone - Sie kommen mit so etwas wie dieses (im AppDelegate, didFinishLaunchingWithOptions):

// Custom Back Button 
UIImageView *buttonBack = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 16, 16)]; 
buttonBack.image = [UIImage imageNamed:@"Back"]; 
buttonBack.contentMode = UIViewContentModeScaleAspectFit; 
Verwandte Themen