2013-10-11 11 views
6

Ich habe eine iOS-7-Anwendung, die UIAppearance verwendet, um die UINavigationBars in der App zu stylen.MFMailComposeViewController ignoriert einige der UIAppearance-Protokoll in iOS 7

Ich habe den folgenden Code in meinem AppDelegate:

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

jedoch die MFMailComposeViewController mit dem redImage Hintergrund erscheint!

Die Dokumentation sagt der folgende:

Wichtig: Die Ansicht Hierarchie dieser Klasse ist privat und Sie müssen es nicht ändern. Sie können das Aussehen einer Instanz jedoch mithilfe des UIAppearance-Protokolls anpassen.

So ist es nicht Grund, dass die oben nicht funktionieren sollte, und ich bin 100% sicher, dass redImage und blueImage verschiedene farbige Bilder sind.

Hat noch jemand dieses Problem erlebt? Ich vermute, es ist ein Bug in iOS 7, aber ich hatte keine Zeit, um auf iOS 6 zu überprüfen (ich bekomme diese Ergebnisse mit einem iPad 4).

+0

Hatten Sie Aussehen zu setzen versucht, vor Komponist gezeigt wurde? –

+0

@ LeszekŻarna Ja, ein Hack, um es zu umgehen, ist es, das globale Erscheinungsbild kurz bevor ich es präsentiere und dann zurück zu ändern, kurz bevor ich es ablehne .. aber das scheint unpraktisch und ich frage mich, ob es eine richtige Lösung dafür war – liamnichols

+0

@ LeszekŻarna hast du in etwas Ähnliches gerannt - ich bin stecken http://stackoverflow.com/questions/20768736/uibarbonneitem-appearance-settintcolor-getting-lost-ios-7 –

Antwort

2

können Sie die appearence Direkt am MFMailComposeViewController

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

Nicht mehr mindestens. – Andy

Verwandte Themen