6

Ich habe ein Problem mit meiner Navigationsleiste, das UIBarButtonItem ist nicht korrekt vertikal ausgerichtet. Ich weiß nicht warum, weil ich ein einfaches UIBarButtonItem und keine benutzerdefinierte Ansicht verwende. Siehe meinen Code unten und danke für Ihre Hilfe!Bar Schaltfläche Artikel nicht korrekt ausgerichtet

UIBarButtonItem *newGameItem = [[UIBarButtonItem alloc] initWithTitle:@"New Game" style:UIBarButtonItemStyleDone target:self action:@selector(newGame)]; 
self.navigationItem.rightBarButtonItem = newGameItem; 

Screenshot navigation bar issue

+0

Das sieht nicht wie die Standardschrift für ein Standard UIBarButtonItem aus. Ändern Sie die Eigenschaften der Schriftart für die Schriftart? Vielleicht mit UIAppearance? – hgwhittle

+0

Sie wundern sich, warum "neues Spiel" ist leicht ** unter ** der "Brett" Titel? – CrimsonChris

+0

Ja, ich benutze Avenir Next, aber ich benutze diese Schriftart in einer anderen App und es gibt kein Problem mit der Navigationsleiste. [[UIBarButtonItem Aussehen] SetTitleTextAttributes: @ {NSForegroundColorAttributeName: [UIColor WhiteColor], NSFontAttributeName: [UIFont fontWithName: @ "Avenir Next" Größe: 18.0]} forState: UIControlStateNormal]; [[UINavigationBar Aussehen] setTitleTextAttributes: @ {NSForegroundColorAttributeName: [UIColor whiteColor], NSFontAttributeName: [UIFont fontWithName: @ "AvenirNext-DemiBold" Größe: 18.0]}]; –

Antwort

6

Eigentlich gibt es mehrere Möglichkeiten, die Bar-Tasten auszurichten. Probieren Sie die Taste Titelposition mit diesem anzupassen:

[self.navigationItem.rightBarButtonItem setTitlePositionAdjustment:UIOffsetMake(-10, -10) 
                forBarMetrics:UIBarMetricsDefault]; 

-10 -10 - nur zum Beispiel

ODER

Sie Ihre newGameItem mit benutzerdefinierten UIButton initialisieren. Die benutzerdefinierte Schaltfläche ist eine Unterklasse von UIButton mit dieser Methode

außer Kraft gesetzt
- (UIEdgeInsets)alignmentRectInsets { 
    return UIEdgeInsetsMake(0, -10, 0, 15.0f); // here you can play with values to align your button properly 
} 

dann initialisieren newGameItem

CustomBarButton *button = [CustomBarButton buttonWithType:UIButtonTypeCustom]; 
[button setTitle:@"New game" forState:UIControlStateNormal]; 
button.frame = CGRectMake (0, 0, 60, 40); 
[button addTarget:self action:@selector(newGame) forControlEvents:UIControlEventTouchUpInside]; 
UIBarButtonItem *newGameItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 
self.navigationItem.rightBarButtonItem = newGameItem; 
+3

Erste Lösung funktioniert leider nicht. – micnguyen

+0

Die zweite Lösung funktioniert tatsächlich, wenn auch nicht so elegant. Vielen Dank! – micnguyen

0

Leider gibt es nicht viel können Sie über UIBarButtonItem vertikalen Abstand tun. Ich glaube, Sie müssen entweder die Schriftgröße Ihres Titels auf der UINavigationBar erhöhen (Sie können dies auch mit UIAppearance tun), oder verringern Sie die Schriftgröße Ihrer UIBarButtonItem.

1

ich mit einem Knopf auf der linken Seite das gleiche Problem hatte, konnte ich es in Xcode beheben 6.3.1: Wählen Sie die Schaltfläche (Balkenschaltfläche) rechte Spalte Registerkarte "Lineal" Einfügebild Top-Wert: -54 statt 0. Beachten Sie: Mein Gerät ist ein iPhone4 mit iOS 7, der Button war perfekt in Xcode und falsch auf dem Gerät, jetzt ist es auf dem Gerät und in Xcode

verlegt
1

Ich hatte ein ähnliches Problem: Wir verwenden benutzerdefinierte Schriftarten über UIAppearance für beide Navigationstitel und bar-Taste Elemente, und in einigen Fällen wurde das richtige Element vertikal falsch ausgerichtet.

Ich könnte leicht die Fehlausrichtung mit [self.navigationItem setRightBarButtonItem:rightItem animated:YES] anstelle der Eigenschaft Setter beheben.

Verwandte Themen