Вопрос

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

}

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

Это было полезно?

Решение

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

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

для iOS 8.0

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

Другие советы

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

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

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

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

  

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top