Jak dodać obraz w UINavigationBar w aplikacji IPhone

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

Wiem UINavigationBar, UIToolBar został zmieniony w iOS 5. Więc kod iOS 4.2 UINavigationBar nie będzie działał w iOS 5.

Chcę wspierać wyświetlanie obrazu w UINavigationBar zarówno w wersji 4.2, jak i 5.

Chcę być wyświetlany obraz w UINavigationBar jak na poniższym zrzucie ekranu.

Obraz paska nawigacji

Proszę o pomoc w tym zakresie, a jeśli jest jakiś przykładowy kod oznacza, że jest bardzo pomocny dla ja.

Dzięki!!!
Author: Paras Joshi, 2012-01-11

3 answers

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ć {[4] } z niestandardowym obrazem.

 77
Author: barley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-11 04:33:16

Inny sposób bez użycia viewcontrollera

// 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;
 33
Author: mikemike396,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-20 07:36:40

Wersja Swift: Możesz utworzyć rozszerzenie protokołu do używania funkcji w kontrolerach widoku

protocol Customizable {
    var navigationItem: UINavigationItem { get }
}

extension Customizable {
    func setNavBarLogo() {

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

        self.navigationItem.titleView = logoImageView
    }
}
 3
Author: rockdaswift,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-01 07:46:49