2009-05-10 39 views

risposta

2

la barra di navigazione ha una proprietà denominata vista titolo - impostala sull'immagine che ti piace. Poiché titleView sovrascrive il titolo della barra di navigazione, devi includere il titolo desiderato nel file immagine. Ancora imposta il titolo su ciò che desideri in modo che appaia sul pulsante Indietro quando si preme una vista. Controller

+0

Non credo che tu voglia fare questo. Invece di creare una semplice immagine 32x32 (per esempio) accanto al testo (estremamente facile da disegnare), stai creando un'immagine molto più grande. Ma sì, questa è sicuramente un'opzione. –

+0

Ho disegnato un'immagine 23x23, ma non so come visualizzarla nella barra di navigazione. Potresti farcelo sapere? – ebaccount

+2

Non è necessario sostituire la vista del titolo, è possibile creare un UIImageView, caricare l'immagine dell'icona e aggiungerla come figlio della vista del titolo. Usa la proprietà frame di UIImageView per posizionarlo dove vuoi. –

9

Non l'ho ancora testato, ma poiché UINavigationBar è una vista, è possibile aggiungervi subview.

UIImage* myImage = [UIImage imageNamed:@"Myimage.png"]; 
UIImageView* myImageView = [[UIImageView alloc] initWithImage:myImage]; 
myImageView.frame.origin.x = 30.0; // You will have to find suitable values for the origin 
myImageView.frame.origin.y = 5.0; 

[myTabbar addSubView:myImageView]; 
[myImageView release]; 

È possibile utilizzare elementi come la proprietà backItem per calcolare la posizione della vista dell'immagine.

+0

Ciao, Potrebbe farmi sapere come posso accedere alla mia UINavigationBar? Grazie. – ebaccount

+0

Sì, funziona. Mostra l'immagine nell'angolo in alto a sinistra della barra di navigazione. Ho ottenuto l'accesso da UINavigationBar * navBar = [self.navigationController navigationBar]; Tuttavia, non ho potuto controllare la posizione x, y dell'immagine. Non importa quali valori ho impostato su myImageView.frame.origin.xey mostra ancora nell'angolo in alto a sinistra. Potresti farmi sapere come posso impostare la posizione – ebaccount

+0

Puoi mostrare il codice così posso vedere esattamente cosa stai facendo? Ricorda che il frame delle tue immagini è relativo al frame di UITabbar, quindi dovresti prima controllarlo. –

36

Ecco come avere l'immagine centrata nella barra di navigazione.

UIImage *image = [UIImage imageNamed: @"NavBarImage.png"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage: image]; 

self.navigationItem.titleView = imageView; 

[imageView release]; 

Questo codice è in realtà contenuta con la fonte di Apple per la barra di navigazione e può essere trovato presso il Centro per sviluppatori iPhone di Apple. La sorgente mostra vari modi per manipolare sia la barra di stato & NavBar.

+1

Potrebbe essere necessario impostare le dimensioni di imageView prima di impostarlo come titleView. I parametri di origine non hanno importanza: saranno centrati automaticamente. I secondi due numeri sono larghezza e altezza. 'imageView.frame = CGRectMake (0, 0, 200, 30);' –

+0

grazie funziona perfettamente! – iwasrobbed

+1

questo non si estende al massimo grado la risposta migliore che ho trovato è http://stackoverflow.com/questions/979750/background-image-for-navigation-view-iphone – LolaRun

6

Se si desidera che l'immagine a destra della barra di navigazione, è possibile definire come un pulsante personalizzato con nessuna azione quando presed, come questo

UIButton* fakeButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage.png"]]; 
UIBarButtonItem *fakeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:fakeButton]; 
self.navigationItem.rightBarButtonItem = fakeButtonItem; 
[fakeButtonItem release]; 
[fakeButton release]; 
+0

Sì, penso che questo in realtà risponda alla domanda originale (con l'immagine alla destra del titolo). È proprio quello di cui avevo bisogno, anche io! –

3

semplicemente inserire il codice in modo che sarà - (void)viewWillAppear:(BOOL)animated; funzionare bene e aggiungere un'immagine con dimensioni 320x40 chiamato Top bar

UIImage *image = [UIImage imageNamed: @"TopBar.png"]; 
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; 
+0

Grande, grazie per la risposta! – edzio27

0

Basta scrivere il proprio barra di navigazione. Pertanto è necessario disattivare il pugno barra di navigazione:

disattivare la barra in alto nel costruttore di interfaccia selezionando il controller di navigazione in Storyboard: Attributi -> simulati Metriche -> Top Bar: selezionare Nessuno

Successivamente è possibile aggiungere qualsiasi HeaderView ti piace ...

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, sFrame.size.width, 100)]; 
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"header_image.png"]]; 
self.headerView.backgroundColor = background; 

// ...add buttons and labels 

[self.view addSubview:headerView]; 
1

ho incontrato lo stesso problem.Found la soluzione migliore

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"background_image.png"] forBarMetrics:UIBarMetricsDefault]; 

Spero che questo possa essere d'aiuto ...

Problemi correlati