2016-04-15 11 views
1

Ich setze benutzerdefinierte zurück button image auf die UINavigationbar.Navigationsleiste zurück button benutzerdefinierte bild y offset

func setBackButton() 
{ 
    let backImg: UIImage = UIImage(named: "BackButton")! 
    UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffset(horizontal: 0, vertical: -60), forBarMetrics: .Default) 

    UINavigationBar.appearance().tintColor = UIColor.goldenColor() 
    UINavigationBar.appearance().backIndicatorImage = backImg 
    UINavigationBar.appearance().backIndicatorTransitionMaskImage = backImg 
} 

Das benutzerdefinierte Bild Setup richtig, aber die Ausrichtung ist nicht geeignet. Die Y-Achse der Zurück-Taste wird zur unteren Y-Achse verschoben. Wie man es in der Mitte der Navigationsleiste ausrichtet.

Meine back button image dimensions sind 34 * 9 (1x), 68 * 18 (2x), 135 * 36 (3x)

enter image description here

+0

Normalerweise wird der Balken-Button nur in der Mitte ausgerichtet sein. Ich denke, die Höhe des Bildes ist höher und wird so angezeigt. Können Sie bitte die Dimension des Bildes hier –

+0

geben Meine Rücktaste Bildmaße sind 34 * 9 (1x), 68 * 18 (2x), 135 * 36 (3x) – pkc456

+0

dann versuchen, Hintergrundfarbe für die Backbar-Taste dann Sie können das genaue Problem finden –

Antwort

0

Bitte versuchen Sie die Zurück-Taste eingestellt, wie wie folgt,

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 

if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) 
    [button setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 0)]; 
else 
    [button setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 

UIImage *btnImage = [UIImage imageNamed:@"back.png"]; 
[button setImage:btnImage forState:UIControlStateNormal]; 
[button setImage:btnImage forState:UIControlStateHighlighted]; 
button.frame = CGRectMake(0, 0, 30, 45); 
button.backgroundColor = [UIColor redColor]; 
[button addTarget:self action:@selector(backBtnAction) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:button]; 
self.navigationItem.leftBarButtonItem = backButton; 
+0

Ich muss den obigen Code in alle Viewcontroller setzen. Ich möchte die benutzerdefinierte Zurück-Schaltfläche in der gesamten App. Deshalb verwende ich UINavigationBar.appearance(). Irgendwelche Alternative? – pkc456

+0

können Sie Kategorie für UIBarButton-Element erstellen, implementieren Sie den Code dort und rufen Sie die Methode von allen View-Controllern auf, damit Sie die gewünschte Ausgabe erhalten können. Oder einfache NSObject-Datei den Code dort und rufen Sie es von allen ViewController Dies wird auch die gleiche Ausgabe. –

+0

Funktioniert der obige Code wie erwartet? Wenn es ist, bitte markieren Sie es als richtige Antwort. –