Подтвердить что ты не робот

Изменение цвета панели инструментов MFMailComposeViewController

Я использую тонированную навигационную панель и тонированный глобальный 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];

}

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

4b9b3361

Ответ 1

Здесь вы идете:

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

для iOS 8.0

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

Ответ 2

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

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

Ответ 3

вы можете сделать это глобально из appdelegate

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

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

Ответ 4

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

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

Ответ 5

Попробуйте следующее:

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

Ответ 6

Из официального описания класса MFMailComposeViewController:

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

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

Спросите здесь, есть ли у кого-то опыт таким образом.