2009-05-10 8 views

Répondre

2

la barre de navigation a une propriété appelée vue de titre - définissez ceci à l'image que vous aimez. Étant donné que titleView écrase le titre de la barre de navigation, vous devez inclure le titre souhaité dans le fichier image. Toujours définir le titre à ce que vous voulez afin qu'il apparaisse sur le bouton arrière lorsque vous appuyez sur une vue Contrôleur

+0

Je ne pense pas que vous voudriez faire ceci. Au lieu de faire une simple image 32x32 (par exemple) à côté du texte (extrêmement facile à dessiner), vous créez une image beaucoup plus grande. Mais oui, c'est définitivement une option. –

+0

J'ai dessiné une image 23x23, mais je ne sais pas comment l'afficher dans la barre de navigation. Pourriez-vous nous le faire savoir? – ebaccount

+2

Vous n'avez pas besoin de remplacer l'affichage du titre, vous pouvez créer un UIImageView, charger votre image d'icône et l'ajouter en tant qu'enfant de la vue du titre. Utilisez la propriété frame de votre UIImageView pour le positionner où vous le souhaitez. –

9

Je n'ai pas testé cela, mais comme UINavigationBar est une vue que vous pouvez ajouter des sous-vues.

UIImage* myImage = [UIImage imageNamed:@"Myimage.png"]; 
UIImageView* myImageView = [[UIImageView alloc] initWithImage:myImage]; 
myImageView.frame.origin.x = 30.0; // You will have to find suitable values for the origin 
myImageView.frame.origin.y = 5.0; 

[myTabbar addSubView:myImageView]; 
[myImageView release]; 

Vous pouvez utiliser des choses comme la propriété backItem pour calculer la position de votre vue d'image.

+0

Bonjour, Pourriez-vous me dire comment puis-je avoir accès à mon UINavigationBar? Merci. – ebaccount

+0

Oui, cela fonctionne. Il montre l'image dans le coin supérieur gauche de la barre de navigation. J'ai obtenu l'accès par UINavigationBar * navBar = [self.navigationController navigationBar]; Cependant, je ne pouvais pas contrôler la position x, y de l'image. Peu importe les valeurs que je définis sur myImageView.frame.origin.x et y il montre encore dans le coin supérieur gauche. Pourriez-vous me dire comment puis-je définir la position – ebaccount

+0

Pouvez-vous montrer le code pour que je puisse voir exactement ce que vous faites? Rappelez-vous que le cadre de votre image est relatif à l'image de l'UITabbar, donc vous devriez d'abord vérifier cela. –

36

Voici comment centrer l'image dans la barre de navigation.

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

self.navigationItem.titleView = imageView; 

[imageView release]; 

Ce code est en fait inclus avec la source Apple pour le NavBar et peut être trouvé à l'iPhone Developer Center chez Apple. La source vous montre différentes façons de manipuler à la fois le StatusBar & NavBar.

+1

Il se peut que vous souhaitiez définir la taille de l'imageView avant de définir le TitleView. Les paramètres d'origine n'ont pas d'importance - ils seront centrés automatiquement. Les deux derniers chiffres sont la largeur et la hauteur. 'imageView.frame = CGRectMake (0, 0, 200, 30);' –

+0

merci cela a fonctionné parfaitement! – iwasrobbed

+1

cela ne s'étend pas au maximum la meilleure réponse que j'ai trouvée est http://stackoverflow.com/questions/979750/background-image-for-navigation-view-iphone – LolaRun

6

Si vous voulez que l'image à droite de la barre de navigation, vous pouvez le définir comme un bouton personnalisé sans action quand PresEd, comme celui-ci

UIButton* fakeButton = (UIButton *) [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourimage.png"]]; 
UIBarButtonItem *fakeButtonItem = [[UIBarButtonItem alloc] initWithCustomView:fakeButton]; 
self.navigationItem.rightBarButtonItem = fakeButtonItem; 
[fakeButtonItem release]; 
[fakeButton release]; 
+0

Oui, je pense que celui-ci répond réellement à la question d'origine (avoir l'image à la droite du titre). C'est juste ce dont j'avais besoin, aussi! –

3

Placez simplement ce code dans - (void)viewWillAppear:(BOOL)animated; donc il va fonctionner correctement et ajouter une image ayant la taille 320x40 nommée Top bar

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

Super, merci pour la réponse! – edzio27

0

Il suffit d'écrire votre propre barre de navigation. Par conséquent, vous devez désactiver le poing Barre de navigation:

Désactiver la barre supérieure dans le générateur d'interface en sélectionnant votre contrôleur de navigation dans votre Storyboard: Attributs Inspecteur -> Simulations métriques -> Top Bar: sélectionnez Aucun

Après vous pouvez ajouter HeaderView vous aimez ...

UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, sFrame.size.width, 100)]; 
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"header_image.png"]]; 
self.headerView.backgroundColor = background; 

// ...add buttons and labels 

[self.view addSubview:headerView]; 
1

je rencontré le même problem.Found la meilleure solution

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"background_image.png"] forBarMetrics:UIBarMetricsDefault]; 

Espérons que cela aiderait ....

Questions connexes