Изменение цвета панели инструментов MFMailComposeViewController
-
06-07-2019 - |
Вопрос
Я использую тонированную панель навигации и тонированную глобальную панель 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 может отклонить ваше заявление.
Давайте спросим здесь, был ли у кого-то такой опыт.