2009-05-14 9 views

Répondre

116

Set titleview du navigationItem

UIImage *image = [UIImage imageNamed:@"image.png"]; 
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:image]; 
+2

quelle est la taille de UIImage devrait être pour le titre ?? J'ai essayé avec 180 * 40 mais il devient flou. – Krunal

+0

Cela fonctionne parfaitement dans iOS 7.1 (sans 'autorelease', bien sûr) La taille de mon image était 296x40px (2x) et il se montre parfait. Je vous remercie! – Alex

+0

il suffit d'ajouter un conseil. Dans swift le code serait: laissez imgTitleBar = UIImage (nommé: "iphone-menu.png") self.navItem.titleView = UIImageView (image: imgTitleBar) –

11

Vous pouvez modifier toutes les vues d'un UINavigationBar. Si vous essayez de modifier le navigationBar dans un contrôleur de navigation faire:

self.navigationItem.titleView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"] autorelease]; 

Si vous créez le navigationBar vous faire la même chose, mais au lieu d'appeler self.navigationItem appel: navigationBar.topItem

+4

Quelle est la taille de UIImage doit être pour le titre ?? J'ai essayé avec 180 * 40 mais il devient flou. – Krunal

+0

** self.navigationBar.topItem ** a fait l'affaire. Merci –

0

Recherche d'une réponse à cette question, j'ai trouvé une solution simple et agréable dans le Apple Discussions forum, remplaçant -(void)drawRect:(CGRect)rect pour UINavigationBar:

@implementation UINavigationBar (CustomImage) 
- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed: @"NavigationBar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
@end 
+0

Je dirais que ce n'est pas la meilleure solution, puisque le Le titre peut être défini de toute façon et il ressemble plus à un hack mais il peut facilement résoudre le problème et cela fonctionne. –

19

Swift
suggéré cadrage Comprend/mise à l'échelle

let image : UIImage = UIImage(named: "image.png")! 
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) 
imageView.contentMode = .ScaleAspectFit 
imageView.image = image 
self.navigationItem.titleView = imageView 
+0

Merci @ Michael-R .... Mais après avoir ajouté le code suivant mon titre de l'élément de navigation ne s'affiche pas – Cloy

+0

Swift et iOS ont changé certains depuis la publication de cette réponse, je vais essayer et donner un coup d'oeil bientôt – rambossa

+0

il devrait être ... cette solution est également pour les images floues .... –

2

mis à jour avec 2.x Swift

navigationItem.titleView = UIImageView.init(image: UIImage(named:"yourImageName")) 
Questions connexes