40

W mojej aplikacji chcę dodać obraz (logo) w pasku nawigacyjnym. Pracuję nad XCode 4.2 i iOS 5.Jak dodać obraz w UINavigationBar w aplikacji IPhone

wiem UINavigationBar, UIToolBar została zmieniona w iOS 5. Więc iOS 4.2 UINavigationBar kod nie będzie działać w iOS 5.

chcę wspierać wyświetlania obrazu w UINavigationBar w wersji 4.2 i 5.

Chcę wyświetlić obraz w postaci UINavigationBar, podobnie jak na poniższym zrzucie ekranu.

Navigation bar image

Proszę o pomoc w tym zakresie i czy jest jakiś przykładowy kod oznacza jego bardzo pomocne dla mnie.

Dzięki!

Odpowiedz

76

Jednym ze sposobów jest użycie UINavigationItem.titleView i UINavigationItem.rightBarButtonItem. Tak:

viewController.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage.png"]]; 
UIBarButtonItem * item = [[UIBarButtonItem alloc] initWithCustomView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage2.jpg"]]];  
viewController.navigationItem.rightBarButtonItem = item;  

Tutaj używam UIImageView jako niestandardowego widoku, ale może to być UIButton z niestandardowego obrazu.

+0

Czy ta praca zarówno dla iOS4 i 5? i czy jest to logo 'clingle', które próbujesz dodać, a nie obraz tła dla paska UINavigationbar? – Illep

+0

Robi to przynajmniej na Simulatorze. I nie widzę powodu, dla którego nie powinien. Nie zrozumiałem twojego drugiego pytania. – barley

+0

dzięki. ale zauważyłem, że obiekt przedmiotu nie został zwolniony w twoim przykładzie. –

32

Innym sposobem bez użycia viewController

// Create your image 
UIImage *image = [UIImage imageNamed: @"logo.png"]; 
UIImageView *imageview = [[UIImageView alloc] initWithImage: image]; 

// set the image view to the title view 
self.navigationItem.titleView = imageview; 
3

wersję SWIFT: Można utworzyć rozszerzenie protokołu za pomocą funkcji w Państwa zdaniem kontrolerów

protocol Customizable { 
    var navigationItem: UINavigationItem { get } 
} 

extension Customizable { 
    func setNavBarLogo() { 

     let logo = UIImage(named: "logo") 
     let logoImageView = UIImageView(image: logo) 

     self.navigationItem.titleView = logoImageView 
    } 
} 
Powiązane problemy