Ответ 1
Здесь вы идете:
[[picker navigationBar] setTintColor:[UIColor blackColor]];
для iOS 8.0
[[picker navigationBar] setBarTintColor:[UIColor blackColor]];
Я использую тонированную навигационную панель и тонированный глобальный 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 navigationBar backgroundcolor
NSDictionary *textTitleOptions = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor darkGrayColor], UITextAttributeTextColor, [UIColor whiteColor], UITextAttributeTextShadowColor, nil];
[[UINavigationBar appearance] setTitleTextAttributes:textTitleOptions];//MFMailComposeViewController 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 может отклонить ваше приложение.
Спросите здесь, есть ли у кого-то опыт таким образом.