2009-10-27 7 views
18

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

} 

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

+2

Вы пробовали настройки picker.navigationBar.tintColor? –

+0

Это прекрасно работает! Спасибо! :-) – iYassin

ответ

39

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

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

для прошивки 8.0

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

Спасибо за подсказку. Это уже было опубликовано как комментарий выше, но теперь я мог бы отметить вопрос как решенный ;-) – iYassin

+2

Для приложений iOS 7.0 это не работает. Посмотрите на записку от eggboxderek. –

+0

setTintColor теперь меняет кнопки на панели, поэтому вы обычно используете setBarTintColor на контроллере view, однако это не работает для MFMailComposeViewController. – Leon

-2

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

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

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

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

+1

Fat Booth справляется с этим. –

+0

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

1

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

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

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

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

3

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

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

5

вы можете сделать это по всему миру от 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 
Смежные вопросы