Изменение цвета панели инструментов MFMailComposeViewController - PullRequest
19 голосов
/ 28 октября 2009

Я использую тонированную панель навигации и тонированную глобальную панель UIToolbar в своем приложении для iPhone. В моем информационном представлении у меня есть кнопка, которая открывает MFMailComposeViewController, и панель инструментов в верхней части этого представления (с кнопками «отменить» и «отправить») все еще синего цвета. Я вызываю 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];

}

Можно ли изменить цвет панели инструментов этого вида? Если это возможно, как я могу это сделать?

Ответы [ 6 ]

40 голосов
/ 15 ноября 2009

Вот, пожалуйста:

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

для iOS 8.0

 [[picker navigationBar] setBarTintColor:[UIColor blackColor]];
12 голосов
/ 01 октября 2013

Незначительный пункт об этой функциональности под iOS7 - свойство цвета оттенка больше не влияет на цвет панели в целом, вместо этого оно просто меняет цвет кнопок «Отправить» и «Отмена» (которые в стиле iOS7 , это просто тонированные наклейки).

Это стоит отметить, если вы изменили цвет строки заголовка на что-то вроде белого или прозрачного, так как под iOS7 кнопки отправки и отмены больше не будут видны.

5 голосов
/ 19 ноября 2013

вы можете сделать это глобально из 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 
3 голосов
/ 07 ноября 2013

Просто хочу подчеркнуть, что вышеприведенный пост об Apple, отклоняющей ваше приложение, является старым постом. Вот цитата из текущей документации MFMailComposeViewController ...

Важно : иерархия представлений этого класса является закрытой, и вы не должны изменять ее. Вы можете, однако, настроить внешний вид экземпляр с использованием протокола UIAppearance.

1 голос
/ 26 июня 2012

Попробуйте это:

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]];
0 голосов
/ 20 декабря 2009

Из официальной ссылки на класс MFMailComposeViewController:

Важно. Сам интерфейс составления почты не настраивается и не должен изменяться вашим приложением. [...]

Я думаю, что было бы лучше выбрать интерфейс составления почты по умолчанию без каких-либо изменений. В противном случае Apple может отклонить ваше заявление.

Давайте спросим, ​​был ли у кого-то такой опыт.

...