2013-10-03 19 views
5

I am setting self.navigationItem.rightBarButtonItem = self.editButtonItem; in viewDidLoad questo funziona perfettamente in iOS < 7 in 7 I get below, perché non è centrato sul titolo? Che cosa sto facendo di sbagliato?iOS7 iphone rightBarButtonItem Titolo non centrato/visualizzato correttamente

enter image description here

anche quando c'è un pulsante indietro e non è stato fatto clic almeno una volta ottengo: enter image description here

Dopo che è stato cliccato ottengo: enter image description here

Lo sfondo i pulsanti sono impostati nell'app delegato:

// Change the appearance of back button 
UIImage *backButtonImage = [[UIImage imageNamed:@"backbtn"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 13, 0, 6)]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

// Change the appearance of other navigation button 

UIImage *barButtonImage = [[UIImage imageNamed:@"btn"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)]; 
[[UIBarButtonItem appearance] setBackgroundImage:barButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 
+0

È necessario aggiungerlo come risposta e contrassegnarlo o eliminare la domanda. – Wain

+0

Sfortunatamente non sono sicuro se non dovrei farlo in iOS 7? Non dovrei usare immagini di sfondo per bottoni e barbette? Dovrei essere in grado di farlo? Inoltre, non sono in grado di contrassegnarlo come risposta. – kos

+0

hai centrato il titolo per il pulsante barra destra. Se è così che hai ottenuto questo – Sandeep

risposta

0

avuto lo stesso problema con la navigazione sotto iOS7 ...

Got più risposte hereandthere ma non sembrano essere utile. Se si utilizza backIndicatorImage di UINavigationBar, rimane in alto e non so come risolverlo.

ho finito per fare ciò che è suggerito here

Creare un UIBarButtonItem come questo:

UIBarButtonItem* backBtn = [[UIBarButtonItem alloc] initWithTitle:@"Back" 
                  style:UIBarButtonItemStylePlain 
                  target:self 
                  action:@selector(backButtonAction:)]; 

backBackgroundImage = [UIImage imageNamed: @"back_btn"]; 
backBackgroundImage = [backBarButtonBackground resizableImageWithCapInsets: 
                  UIEdgeInsetsMake(0.0, 14.0, 0.0, 5.0)]; 
[backBtn setBackgroundImage:backBackgroundImage 
        forState:UIControlStateNormal 
       barMetrics:UIBarMetricsDefault]; 

[backBtn setTitlePositionAdjustment:UIOffsetMake(5, 0) forBarMetrics:UIBarMetricsDefault]; 

e quindi utilizzarlo come il pulsante Indietro sul controller di navigazione.

+1

Questo potrebbe o non potrebbe funzionare a seconda di dove è stato eseguito, stavo cercando di impostare i pulsanti degli elementi di navigazione nel delegato dell'app in modo che fossero riutilizzati ovunque. Quindi non sono sicuro che l'impostazione dell'offset per il titolo funzionerebbe, ma ci proveremo. Per ora ho rimosso l'uso delle immagini tutte insieme. Anche questo potrebbe non risolvere il problema in cui l'immagine non viene visualizzata la prima volta che deve essere utilizzata sulla barra di navigazione. – kos

+0

Sì, hai ragione. Ma come puoi vedere, iOS7 ti concede solo di farlo su ciascuno dei tuoi ViewController. Notate anche la seguente strana cosa: i controller di sistema (ad esempio MFMailComposeViewController) imposteranno il font del vostro leftBarButtonItem quando sono presentati in modo modale, quindi state attenti a quella cosa. Non è sicuro se sarà mai documentato. –

+0

Inoltre, ho ottenuto la stessa cosa con il pulsante di modifica. E ho dovuto sostituirlo con uno personalizzato. –

Problemi correlati