2013-10-11 1 views
6

У меня есть приложение только для iOS 7, которое использует UIAppearance для стилизации UINavigationBar в приложении.MFMailComposeViewController игнорирует некоторые из протокола UIAppearance в iOS 7

У меня есть следующий код в моем AppDelegate:

[[UINavigationBar appearance] setBackgroundImage:redImage forBarMetrics:UIBarMetricsDefault]; 
[[UINavigationBar appearanceWhenContainedIn:[MFMailComposeViewController class], nil] setBackgroundImage:blueImage forBarMetrics:UIBarMetricsDefault]; 

Однако MFMailComposeViewController появляется на фоне redImage!

В документации говорится следующее:

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

Так что не причина, что выше, не должны работать, и я 100% уверен, что redImage и blueImage различные цветные изображения.

Неужели кто-нибудь еще испытал эту проблему? Я предполагаю, что это ошибка в iOS 7, но у меня не было времени проверить iOS 6 (я получаю эти результаты с помощью iPad 4).

+0

Если бы вы попытались установить явку композитор был показан? –

+0

@ LeszekŻarna Да, хак, чтобы обойти это, чтобы установить глобальный внешний вид перед тем, как представить его, а затем изменить его обратно, прежде чем я его отклоню .. однако это кажется импрессивным, и мне было интересно, было ли там правильное исправление – liamnichols

+0

@ LeszekŻarna вы столкнулись с чем-то похожим - я застрял http://stackoverflow.com/questions/20768736/uibarbuttonitem-appearance-settintcolor-getting-lost-ios-7 –

ответ

2

Вы можете установить непосредственно на внешний вид в MFMailComposeViewController в

MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; 
[MFMailComposeViewController.navigationBar setBackgroundImage:blueImage forBarMetrics:UIBarMetricsDefault]; 
+0

Больше не по крайней мере. – Andy

Смежные вопросы