Ho una pila di tre VC che sono coordinati attraverso un controller di navigazione e utilizzare una barra di navigazione. Su questa barra di navigazione, in ogni VC, ho aggiunto lo stesso pulsante (un pulsante 'Esci') come un elemento pulsante della barra destra:ios barra destra barra di navigazione elemento destro cambia quando si preme il nuovo controller vista
UIBarButtonItem *logoutButton =
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"LogoutButtonTitle", @"")
style:UIBarButtonItemStyleBordered
target:self
action:@selector(logout)];
[categoriesViewController.navigationItem setRightBarButtonItem:logoutButton];
[[self navigationController] pushViewController:categoriesViewController animated:YES];
Così ogni controller di vista ha questo pulsante di disconnessione nella barra di navigazione. Quando spingo uno di questi controller nello stack di navigazione, i nuovi controller di visualizzazione si caricano come previsto, tutto viene visualizzato e funziona correttamente, ma subito dopo la visualizzazione del nuovo controller di visualizzazione (al termine dell'animazione) il pulsante di logout si sposta di circa 3px sul destra.
Ho provato ad aggiungere il pulsante prima di spingere il VC, nei metodi init del VC, in viewDidLoad e viewDidAppear ma ancora lo stesso comportamento. Non riesco a liberarmi di questo cambiamento.
Ciò che è strano è che il pulsante Indietro scompare e riappare quando si preme il nuovo VC (utilizzando l'animazione predefinita), ma il pulsante "Logout" sembra rimanere in posizione e basta spostarsi a destra dopo che l'animazione è terminata. Inoltre, il carattere dei pulsanti non è il carattere predefinito, ma uno dei font di sistema (Helvetica light) potrebbe essere correlato a questo.
Qualche idea sul perché questo sta accadendo?
È perché non sto usando il carattere predefinito. In qualche modo, quando si esegue il rendering del pulsante con un carattere diverso sullo schermo, la sua cornice deve essere ricalcolata - o questa è la mia ipotesi migliore. –
Sto avendo lo stesso problema - hai finito per aggiustarlo? –