Ich habe einen Stapel von drei VCs, die durch einen Navigationscontroller koordiniert werden und eine Navigationsleiste verwenden. Auf dieser Navigationsleiste in jedem VC, habe ich die gleiche Taste (a 'Logout' Taste) als Element rechts bar Taste:ios navigation bar right button artikel verschiebt, wenn neue Ansicht Controller drücken
UIBarButtonItem *logoutButton =
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"LogoutButtonTitle", @"")
style:UIBarButtonItemStyleBordered
target:self
action:@selector(logout)];
[categoriesViewController.navigationItem setRightBarButtonItem:logoutButton];
[[self navigationController] pushViewController:categoriesViewController animated:YES];
So jede View-Controller diese Logout-Button in der Navigationsleiste hat. Wenn ich einen dieser Controller auf den Navigationsstapel drücke, werden die neuen View Controller wie erwartet geladen, alles wird angezeigt und funktioniert ordnungsgemäß, aber direkt nachdem der neue View Controller angezeigt wird (nachdem die Animation beendet ist), verschiebt sich der Logout Button um 3px zum Recht.
Ich habe versucht, die Schaltfläche vor dem Drücken der VC, in den Init-Methoden der VC, in der ViewDidLoad und ViewDidAppear aber immer noch das gleiche Verhalten. Ich kann diese Verschiebung nicht loswerden.
Was ist seltsam ist, dass die Schaltfläche zurück verschwindet und wieder erscheint, wenn die neue VC (mit der Standard-Animation), aber die Schaltfläche "Abmelden" scheint an Ort und Stelle bleiben und nur nach der Animation nach rechts verschieben. Auch die Schrift auf den Schaltflächen ist nicht die Standardschrift, sondern eine der Systemschriftarten (Helvetica light), die damit verwandt sein kann.
Irgendwelche Ideen, warum das passiert?
Es ist, weil ich nicht die Standardschriftart verwende. Irgendwie, wenn der Knopf mit einer anderen Schriftart auf den Bildschirm gerendert wird, muss sein Rahmen neu berechnet werden - oder das ist meine beste Schätzung. –
Ich habe das gleiche Problem - hast du es behoben? –