2013-06-03 5 views
8

Ho un'app che utilizza Storyboard per visualizzare due schermate. Il primo è un elenco (riferito allo screenshot come "Lista"), e il secondo è una mappa ("Térkép"). Ogni vista ha un pulsante di navigazione sinistro e destro. Premendo il tasto destro si spinge la vista della mappa sul Navigation Controller. Il pulsante Indietro è nascosto manualmente dal metodo viewDidLoad della mappa.UIBarButtonLe dimensioni dell'elemento differiscono

List view Map view

La domanda è, che il motivo per cui fare gli elementi della barra del tasto ha formato differente su ogni schermo? Come posso controllare la dimensione dei pulsanti?

Le immagini sui pulsanti sono della stessa dimensione. Skinning è fatto in AppDelegate attraverso le impostazioni di aspetto:

// navbar background 
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bg-titlebar.png"] 
            forBarMetrics:UIBarMetricsDefault]; 

// navbar button background 
[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage imageNamed:@"btn-main.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 4.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
             forState:UIControlStateNormal 
             barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearance] setBackgroundImage:[[UIImage imageNamed:@"btn-main-active.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 4.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
             forState:UIControlStateHighlighted 
             barMetrics:UIBarMetricsDefault]; 

// back button background 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[[UIImage imageNamed:@"btn-back.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 12.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
                forState:UIControlStateNormal 
               barMetrics:UIBarMetricsDefault]; 
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:[[UIImage imageNamed:@"btn-back-active.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(4.0, 12.0, 4.0, 4.0) resizingMode:UIImageResizingModeStretch] 
                forState:UIControlStateHighlighted 
               barMetrics:UIBarMetricsDefault]; 
+0

bene nel mio caso questa formula sempre ha lavorato per me. Potrebbe essere che stai dando dei limiti al tuo pulsante bar separatamente o che ci dovrebbe essere qualche problema di orientamento. –

+0

Le domande con le immagini sono sempre apprezzate :) – Anupdas

+0

Provare a impostare i pulsanti nella viewWillAppear se si sta utilizzando viewDidLoad –

risposta

1

È possibile ottenere due UIBarButtonsItem identico con la creazione in una sola segue e quindi copiare-incollare il pulsante in un altro segue (almeno questo sta lavorando nel mio caso, ma mi rifugio Sono stato in grado di identificare la causa principale del problema fino ad ora).

Se la creazione diretta di un UIBarButtonItem non funziona, rilasciare un UIButton in NavigationItem e creerà automaticamente un UIBarButtonItem con un UIButton all'interno (vedi immagine sotto). In questo modo è possibile configurare un'immagine o altri attributi non presenti in un UIBarButtonItem. Una volta che sei soddisfatto dell'aspetto del tuo UIButton (incorporato nel pulsante Barra), copialo incollalo in un seguito diverso e dovrebbero mantenere le stesse dimensioni.

UIBarButtonItem vs UIButton inside UIBarButtonItem

+0

Ho provato, purtroppo non aiuta :( – gklka

+0

E hai provato, invece di rilasciare e UIBarButtonItem e impostare l'immagine tramite il proxy di aspetto, per rilasciare un UIButton e impostare l'immagine direttamente? Lo so non è così conveniente, ma io Spero che possa risolvere il tuo problema – jmg

+0

Credo che gli UIButtons rilasciati in UINavitaionBars diventino automaticamente UIBarButtonItems Ho anche provato a creare UIBarButtonItems dal codice, ma il risultato era esattamente lo stesso – gklka

Problemi correlati