Posiadam stos trzech VC, które są koordynowane za pomocą kontrolera nawigacyjnego i korzystają z paska nawigacyjnego. Na tym pasku nawigacyjnym, w każdej VC I dodaje ten sam przycisk (przycisk „Wyloguj”) jako elementu prawym przyciskiem pasek:Pasek nawigacyjny ios Prawy przycisk przesuwa element podczas przesuwania nowego kontrolera widoku.
UIBarButtonItem *logoutButton =
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"LogoutButtonTitle", @"")
style:UIBarButtonItemStyleBordered
target:self
action:@selector(logout)];
[categoriesViewController.navigationItem setRightBarButtonItem:logoutButton];
[[self navigationController] pushViewController:categoriesViewController animated:YES];
Więc każdy kontroler ma widok tego przycisku wylogowania w pasku nawigacyjnym. Kiedy wciskam dowolny z tych kontrolerów na stos nawigacyjny, nowe kontrolery widoku ładują się zgodnie z oczekiwaniami, wszystko jest wyświetlane i działa poprawnie, ale zaraz po wyświetleniu nowego kontrolera widoku (po zakończeniu animacji) przycisk wylogowania przesuwa o około 3 piksele do dobrze.
Próbowałem dodać przycisk przed naciśnięciem VC, w metodach inicjacji VC, w viewDidLoad i viewDidAppear, ale nadal zachowuje się tak samo. Nie mogę pozbyć się tej zmiany.
Dziwne jest to, że przycisk Wstecz znika i pojawia się po naciśnięciu nowego przycisku VC (przy użyciu domyślnej animacji), ale przycisk "Wyloguj" wydaje się pozostawać w miejscu i po prostu przesuwa się w prawo po zakończeniu animacji. Ponadto czcionka na przyciskach nie jest czcionką domyślną, ale jedna z czcionek systemowych (Helvetica light) może być z tym powiązana.
Jakieś pomysły na to, dlaczego tak się dzieje?
To dlatego, że nie używam domyślnej czcionki. W jakiś sposób, podczas renderowania przycisku z inną czcionką na ekranie, jego ramka musi zostać przeliczona - lub to jest moje najlepsze przypuszczenie. –
Mam ten sam problem - czy w końcu to naprawiłeś? –