2009-10-27 4 views
18

J'utilise une barre de navigation teintée et un UITolderbar global teinté dans mon application iPhone. Dans ma vue d'info, j'ai un bouton qui ouvre un MFMailComposeViewController, et la barre d'outils en haut de cette vue (avec les boutons "cancel" et "send") est toujours bleue. J'appelle la MFMailComposeViewController comme ceci:Changement de la couleur de la barre d'outils de MFMailComposeViewController

-(void)displayMailSheet 
{ 

    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
    picker.mailComposeDelegate = self; 

    [picker setSubject:@"..."]; 

    NSArray *toRecipients = [NSArray arrayWithObject:@"..."]; 

    [picker setToRecipients:toRecipients]; 

    [self presentModalViewController:picker animated:YES]; 
    [picker release]; 

} 

Est-il possible de changer la couleur de la barre d'outils de ce point de vue? Si c'est possible, comment puis-je faire cela?

+2

Avez-vous essayé la mise picker.navigationBar.tintColor? –

+0

Cela fonctionne très bien! Je vous remercie! :-) – iYassin

Répondre

39

Ici, vous allez:

[[picker navigationBar] setTintColor:[UIColor blackColor]]; 

pour iOS 8,0

[[picker navigationBar] setBarTintColor:[UIColor blackColor]]; 
+0

Merci pour le conseil. Il a déjà été posté comme un commentaire ci-dessus, mais maintenant je pourrais marquer la question comme résolue ;-) – iYassin

+2

Pour les applications iOS 7.0, cela ne fonctionne pas. Regardez la note de eggboxderek. –

+0

setTintColor modifie maintenant les boutons de la barre afin que vous utilisiez normalement setBarTintColor sur un viewcontroller, mais cela ne fonctionne pas pour MFMailComposeViewController. – Leon

-2

De la référence officielle MFMailComposeViewController Classe:

Important: L'interface de composition de courrier lui-même est pas personnalisable et ne doit pas être modifié par votre application. [...]

Je pense que ce serait un meilleur choix de présenter l'interface de composition de courrier par défaut sans aucun changement. Sinon, Apple peut rejeter votre demande.

Demandons ici si quelqu'un a vécu une expérience de cette façon.

+1

Fat Booth parvient à s'en sortir. –

+0

vous pouvez le faire avec globalement à partir d'appdelegate. –

1

Essayez ceci:

MFMailComposeViewController *mailController = [MFMailComposeViewController new]; 

[mailController.navigationBar setTintColor:[UIColor colorWithHue:240.0f/359.0f 
                 saturation:85.0f/100.0f 
                 brightness:60.0f/100.0f 
                  alpha:0.0f]]; 
12

Un point mineur sur cette fonctionnalité sous iOS 7 - la propriété de couleur de teinte n'affecte la couleur de la barre dans son ensemble, au lieu de cela change simplement la couleur de la « Envoyer » et les boutons 'Annuler' (qui, dans le style iOS7, sont simplement des étiquettes teintées). Cela vaut la peine de noter si vous avez changé la couleur de la barre de titre en quelque chose comme blanc ou clair, car sous iOS7 les boutons envoyer et annuler ne seront plus visibles.

3

Je veux juste souligner que le post ci-dessus sur Apple rejetant votre demande est un ancien article. Voici une citation de la documentation MFMailComposeViewController actuelle ...

Important: La hiérarchie de la vue de cette classe est privée et vous ne devez pas le modifier. Vous pouvez toutefois personnaliser l'apparence d'une instance à l'aide du protocole UIAppearance.

5

vous pouvez le faire dans le monde de appdelegate

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbar-background.png"] forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault]; // MFMailComposeViewController's navigationBar backgroundcolor 

NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor], UITextAttributeTextColor, [UIColor whiteColor], UITextAttributeTextShadowColor, nil]; 
[[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions];//MFMailComposeViewController's navigationBar text color 
Questions connexes