mfmailcomposeviewcontrollerdelegate bar ios objective-c colors toolbar mfmailcomposeviewcontroller

ios - mfmailcomposeviewcontrollerdelegate - Cambio del color de la barra de herramientas de MFMailComposeViewController



send email swift 4 (6)

Aqui tienes:

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

para iOS 8.0

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

Estoy usando una barra de navegación teñida y una barra de herramientas global en mi aplicación para iPhone. En mi vista de información, tengo un botón que abre un MFMailComposeViewController, y la barra de herramientas en la parte superior de esa vista (con los botones "cancelar" y "enviar") sigue siendo azul. Estoy llamando a MFMailComposeViewController de esta manera:

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

¿Es posible cambiar el color de la barra de herramientas de esa vista? Si es posible, ¿cómo puedo hacer esto?


De la referencia oficial de la clase MFMailComposeViewController:

Importante: la interfaz de composición de correo en sí no es personalizable y no debe ser modificada por su aplicación. [...]

Creo que sería una mejor opción presentar la interfaz de composición de correo predeterminada sin ningún cambio. De lo contrario, Apple puede rechazar su solicitud.

Preguntemos aquí si alguien tuvo una experiencia de esta manera.


Prueba esto:

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


Puedes hacerlo globalmente desde 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


Solo quiero enfatizar que la publicación anterior sobre Apple rechazando su solicitud es una publicación antigua. Aquí hay una cita de la documentación actual de MFMailComposeViewController ...

Importante : la jerarquía de vistas de esta clase es privada y no debe modificarla. Sin embargo, puede personalizar la apariencia de una instancia utilizando el protocolo UIAppearance.


Un pequeño punto sobre esta funcionalidad en iOS7: la propiedad de color de tinte ya no afecta al color de la barra en su totalidad, sino que simplemente cambia el color de los botones "Enviar" y "Cancelar" (que, en el estilo de iOS7, son simplemente etiquetas teñidas).

Vale la pena señalar si ha cambiado el color de la barra de título a algo como blanco o claro, ya que en iOS7 los botones de enviar y cancelar ya no estarán visibles.