2013-07-18 11 views
8

Voglio mettere Immagine personalizzata sul mio UINavigationBar,formato dell'immagine su UINavigationBar

Quando ho provato questo due frammenti di codice,

[self.navigationItem setTitleView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]]]; 

E immagine

UIButton *logoView = [[UIButton alloc] initWithFrame:CGRectMake(0,0,70,30)]; 
    [logoView setBackgroundImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal]; 
    [logoView setUserInteractionEnabled:NO]; 
    self.navigationItem.titleView = logoView; 

che ho può vedere sul mio dispositivo sta diventando sfocato o si sta allungando.

ho fatto di immagini con risoluzione di 180*40 (larghezza * altezza)

Voglio sapere l'esatta dimensione di immagine. cosa, sarebbe?

Grazie in anticipo.

+1

Se la dimensione dell'immagine è ** 140x35 **, impostare le dimensioni del fotogramma 'imageView'. Altrimenti sarà ovviamente allungato. – TheTiger

+0

Vuoi aggiungere un logo sulla barra di navigazione al centro? – TheTiger

+0

sì, su UINavigationBar – Krunal

risposta

17

uso questo

UIImageView *navigationImage=[[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 98, 34)]; 
navigationImage.image=[UIImage imageNamed:@"topNav-logo.png"]; 

UIImageView *workaroundImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 98, 34)]; 
    [workaroundImageView addSubview:navigationImage]; 
    self.navigationItem.titleView=workaroundImageView; 

spero che questo aiuti.

+0

cos'è 'navigationImage' ?? – Krunal

+0

Vedere la modifica – iEinstein

+0

quale dovrebbe essere la dimensione dell'immagine? – Krunal

1

È necessario innanzitutto inizializzare il titleView. e poi impostarlo l'ImageView come una visualizzazione secondaria:

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

self.navigationItem.titleView = [[UIView alloc] initWithFrame:imageView.bounds]; 
[self.navigationItem.titleView addSubview:imageView]; 
+0

funziona ma l'immagine fissa viene allungata, quale dovrebbe essere la risoluzione dell'immagine? – Krunal

+0

Puoi rendere l'immagine sempre con la risoluzione che ti piace, dovresti controllare un paio di cose: 1. la modalità di contenuto dell'immagine dovrebbe essere aspectFit, quindi non si otterrà limiti ouf quando aggiunto a superView. 2. controllare anche l'autoresizing dell'immagine (rimuovere streching). 3. self.navigationItem.titleView.autoresizesSubviews è il valore predefinito == YES, provare a impostarlo su NO. – Lirik

+0

Come rendere la modalità di contenuto dell'immagine aspectFit? – Krunal

2

creare un'immagine con dimensioni (320 x 44) e impostare come un titolo come muggito ..

self.navigationItem.titleView = yourImageView; 

Vedi tutto come esempio sotto. ..

- (void)viewDidLoad{ 
     UIImageView* imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]]; 
     self.navigationItem.titleView = imgView; 
     [imgView release]; 
} 
+0

Voglio mettere l'immagine del titolo e non l'immagine di sfondo su NavigationBar – Krunal

+0

vedere sopra codice aggiornato .. –

+0

@Krunal provi questa risposta ?? –