ios5.0 introduit un tas de fonctionnalités pour personnaliser l'apparence des éléments standard.Si vous ne voulez pas utiliser ImageView pour le titre, une alternative serait de personnaliser l'apparence de tous les UINavbars en utilisant une image d'arrière-plan et une police/couleur personnalisée.
- (void) customiseMyNav
{
// Create resizable images
UIImage *portraitImage = [[UIImage imageNamed:@"nav_bar_bg_portrait"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
UIImage *landscapeImage = [[UIImage imageNamed:@"nav_bar_bg_landscape"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
// Set the background image
[[UINavigationBar appearance] setBackgroundImage:portraitImage forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:landscapeImage forBarMetrics:UIBarMetricsLandscapePhone];
// set the title appearance
[[UINavigationBar appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor colorWithRed:50.0/255.0 green:150.0/255.0 blue:100/255.0 alpha:1.0],
UITextAttributeTextColor,
[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.6],
UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"Arial-Bold" size:0.0],
UITextAttributeFont,
nil]];
}
Pas nécessairement pertinent à la question, mais si vous voulez alterner entre le titre par défaut et un titre d'image, vous pouvez revenir à celui par défaut en définissant 'self.navigationItem.titleView' à' nil' –
Ce n'est plus fonctionne dans iOS6. L'image sera étirée et mal formée. –
dans IOS6 vous pouvez maintenant définir une image de fond pour la barre de navigation. Toutefois, si vous utilisez ce code et voyez l'image étirée, vous ne définissez pas correctement contentMode sur le UIImageView que vous mettez dans titleView. –