Modification de la couleur de la barre d'outils de MFMailComposeViewController

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 button qui ouvre un MFMailComposeViewController, et la barre d'outils en haut de cette vue (avec les buttons "cancel" et "send") est toujours bleue. J'appelle le MFMailComposeViewController comme ceci:

-(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 cette vue? Si c'est possible, comment puis-je faire cela?

Voici:

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

pour iOS 8.0

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

Un point mineur sur cette fonctionnalité sous iOS7 – la couleur de la couleur n'affecte plus la couleur de la barre dans son set, mais change simplement la couleur des buttons 'Envoyer' et 'Annuler' (qui, dans le style iOS7, sont simplement labels teintées).

Cela vaut la peine de noter si vous avez changé la couleur de la barre de titre pour quelque chose comme blanc ou clair, car sous iOS7 les buttons envoyer et annuler ne seront plus visibles.

vous pouvez le faire globalement à partir d'appdelegate

 [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbar-background.png"] forBarPosition:UIBarPositionTopAttached barMesortingcs:UIBarMesortingcsDefault]; // MFMailComposeViewController's navigationBar backgroundcolor NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor], UITextAtsortingbuteTextColor, [UIColor whiteColor], UITextAtsortingbuteTextShadowColor, nil]; [[UINavigationBar appearance] setTitleTextAtsortingbutes:textTitleOptions];//MFMailComposeViewController's navigationBar text color 

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

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

Essaye ça:

 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]]; 

À partir de la reference de class officielle MFMailComposeViewController:

Important: L'interface de composition du courrier elle-même n'est pas personnalisable et ne doit pas être modifiée 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 request.

Demandons ici si quelqu'un a eu une expérience de cette manière.