ios objective-c ipad ios7

El color de fondo de la barra de MFMailComposeViewController no cambia en iOS7



objective-c ipad (9)

Estoy tratando de cambiar el color de fondo de MFMailComposeViewController en iOS7 pero no puedo hacer que funcione.

Estoy usando el siguiente recorte:

MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; picker.mailComposeDelegate = self; if([picker.navigationBar respondsToSelector:@selector(barTintColor)]) { // iOS7 picker.navigationBar.barTintColor = READER_NAVIGATION_BAR_BACKGROUND_COLOR; // Set back button arrow color [picker.navigationBar setTintColor:READER_NAVIGATION_BAR_BACK_BUTTON_ARROW_COLOR]; // Set Navigation Bar Title Color [picker.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObject:READER_NAVIGATION_BAR_TITLE_NORMAL_FONT_COLOR forKey:UITextAttributeTextColor]]; // Set back button color [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:READER_NAVIGATION_BAR_BUTTONS_FONT_COLOR, UITextAttributeTextColor,nil] forState:UIControlStateNormal]; }

¿Alguien sabe cómo cambiar el color de fondo del MFMailComposeViewController en iOS7?


@ Respuesta de SoftDesigner:

A partir de iOS 9:

[UINavigationBar appearance].tintColor = yourFavoriteColor;

no funciona en el MFMailComposeViewController.

El resto de la respuesta funciona (lo usé), pero hasta donde puedo decir que estás atascado con los colores de Apple para los botones de la barra de navegación.

Espero que esto salve a alguien más angustia.


El truco aquí es llamar ''métodos de apariencia'' como

[UINavigationBar appearance].barTintColor = [UIColor whiteColor]; [UINavigationBar appearance].tintColor = [UIColor redColor];

ANTES DE LLAMAR A

[[MFMailComposeViewController alloc] init];

De esta manera, el esquema de color se aplicará al editor de correo. Se puede devolver a los valores predeterminados en mailComposeController:didFinishWithResult:


Para iOS8:

NSDictionary *navbarTitleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor],UITextAttributeTextColor, [UIColor blackColor], UITextAttributeTextShadowColor, [NSValue valueWithUIOffset:UIOffsetMake(-1, 0)], UITextAttributeTextShadowOffset, nil]; [[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes];

O

navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObject:[UIColor yellowColor] forKey:UITextAttributeTextColor];


Primero presente el MFMailComposeViewController luego cambie su tintColor

[self presentViewController:emailDialog animated:TRUE completion:nil]; [[UINavigationBar appearance] setBackgroundImage:nil forBarPosition:UIBarPositionTopAttached barMetrics:UIBarMetricsDefault];


Prueba el siguiente código

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[UINavigationBar appearance] setBarTintColor:[UIColor blackColor]]; [[UINavigationBar appearance] setBackgroundColor:[UIColor blackColor]]; // Your usual code follows here ......



Solución Swift 3:

extension MFMailComposeViewController { override open func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent } open override func viewDidLoad() { super.viewDidLoad() navigationBar.isTranslucent = false navigationBar.isOpaque = false navigationBar.barTintColor = UIColor.white navigationBar.tintColor = UIColor.white } }


Tuve un problema que me impedía configurar el color de fondo. Resulta que tenía otro código en otra parte que configuraba la imagen de fondo en [UIImage new].

El siguiente código lo arregló:

[[UINavigationBar appearance] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setShadowImage:nil];


prueba esto. trabajó para mi.

MFMailComposeViewController* myailViewController = [[MFMailComposeViewController alloc] init]; // set other attributes of mailcomposer here. myMailViewController.mailComposeDelegate = self; [myMailViewController.navigationBar setTintColor:[UIColor whiteColor]]; [self presentViewController:myMmailViewController animated:YES completion:nil];