web-dev-qa-db-fra.com

Comment ajouter une image dans UINavigationBar dans l'application IPhone

Dans mon application, je veux ajouter une image (logo) dans la barre de navigation. Je travaille sur XCode 4.2 et iOS 5.

Je sais que UINavigationBar, UIToolBar a été modifié dans iOS 5. Le code iOS 4.2 UINavigationBar ne fonctionnera donc pas dans iOS 5.

Je veux prendre en charge l'image d'affichage dans UINavigationBar dans les versions 4.2 et 5.

Je veux afficher l'image dans UINavigationBar comme dans la capture d'écran ci-dessous.

Navigation bar image

S'il vous plaît, aidez à cet égard et s'il y a un exemple de code, cela me sera très utile.

Merci!!!

41
user2136

Pour ce faire, vous pouvez utiliser UINavigationItem.titleView et UINavigationItem.rightBarButtonItem. Comme ça :

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;    

Ici, j'utilise UIImageView comme vue personnalisée, mais cela peut être UIButton avec une image personnalisée.

78
barley

Une autre façon sans utiliser un 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;
33
mikemike396

Version Swift: vous pouvez créer une extension de protocole pour utiliser la fonction dans vos contrôleurs de vue

protocol Customizable {
    var navigationItem: UINavigationItem { get }
}

extension Customizable {
    func setNavBarLogo() {

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

        self.navigationItem.titleView = logoImageView
    }
}
4
rockdaswift