Come impostare un’immagine in modo programmatico in una NavBar?

Ho una vista dettagliata con una barra di navigazione con un pulsante Indietro e un nome per la vista. La barra di navigazione è impostata a livello di programmazione. Il nome presentato è impostato in questo modo.

self.title = NSLocalizedString(name, @"");

Il nome dipende dalla vista presentata.

Ora vorrei anche presentare una piccola icona sulla barra di navigazione che dipende anche dalla vista.

Come lo faccio?

È ansible impostare l’immagine di sfondo su navigationBar Using this

Inserisci in didFinishLaunchingWithOptions

 [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"title_bar.png"] forBarMetrics:UIBarMetricsDefault]; 

Oppure puoi impostare l’immagine della barra di navigazione in qualsiasi vista usando

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

Oppure puoi impostare una vista sul tuo NavigationBar Link

 [[UINavigationBar appearance] addSubview:yourView]; 

o

 self.navigationItem.titleView = YourView; 

E imposta il titolo usando h

 self.navigationItem.title = @"Your Title"; 

E puoi usare navigationBarButton usando questo

 -(void)getRightBarBtn { UIButton *Btn =[UIButton buttonWithType:UIButtonTypeCustom]; [Btn setFrame:CGRectMake(0.0f,0.0f,68.0f,30.0f)]; [Btn setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"yourImage.png"]] forState:UIControlStateNormal]; //[Btn setTitle:@"OK" forState:UIControlStateNormal]; //Btn.titleLabel.font = [UIFont fontWithName:@"Georgia" size:14]; [Btn addTarget:self action:@selector(yourBtnPress:) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithCustomView:Btn]; [self.navigationItem setRightBarButtonItem:addButton]; } 

E imposta semplice imageView sulla barra di navigazione

 UIImageView *image = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"star.png"]]; UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:image]; self.navigationItem.rightBarButtonItem = backBarButton; 

Devi sottoclass UINavigationBar. Quindi in drawRect fai qualcosa come:

 [[UIImage imageNamed...] drawInRect:...] 

e chiama il metodo eccellente del corso

Aggiungi questo codice in viewDidLoad nel tuo ViewController:

 UIImage *image = [UIImage imageNamed: @"myIcon.png"]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; imageView.frame = CGRectMake(5, 2, 100, 39); [self.navigationController.navigationBar addSubview:imageView]; 

imageView può anche essere dichiarato come variabile di istanza, quindi è ansible accedervi dopo averlo aggiunto (ad esempio se si desidera rimuovere l’icona dalla barra di navigazione ad un certo punto).

 UIButton *homeBtn=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 46, 28)]; [homeBtn setBackgroundImage:[UIImage imageNamed:@"homeBtn.png"] forState:UIControlStateNormal]; [homeBtn addTarget:self action:@selector(homeBtnPressed) forControlEvents:UIControlEventTouchUpInside]; UIBarButtonItem *navHomeBtn=[[[UIBarButtonItem alloc] initWithCustomView:homeBtn] autorelease]; self.navigationItem.rightBarButtonItem=navHomeBtn; [homeBtn release];