Ändern Sie die Farbe der Navigationsschaltfläche in MFMailComposerViewController auf iOS 7
Ich versuche, ändern Sie die text-Farbe für die navigation die Schaltflächen in einem MFMailComposerViewController aber es funktioniert nicht wie unter iOS 6. In iOS 6 klappte es mit UIAppearance wie diese:
//Navigation button
UIBarButtonItem *barButton = [UIBarButtonItem appearance];
NSDictionary *barButtonTitleTextAttributes = @{UITextAttributeTextColor: [UIColor redColor]};
NSDictionary *disabledBarButtonTitleTextAttributes = @{UITextAttributeTextColor: [UIColor grayColor]};
[barButton setTitleTextAttributes:barButtonTitleTextAttributes forState:UIControlStateNormal];
[barButton setTitleTextAttributes:disabledBarButtonTitleTextAttributes forState:UIControlStateDisabled];
[barButton setBackgroundImage:[[UIImage imageNamed:@"btn_appearance"] stretchableImageWithLeftCapWidth:6 topCapHeight:0] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
Aber das funktioniert nicht auf iOS 7 und sieht immer so aus:
Ich auch versucht, die tintColor
- Attribut auf die navigationBar aber das hat keinen Effekt:
navigationBar.tintColor = [UIColor redColor];
Ist es sowieso zu ändern, die navigation, der text in der Schaltfläche Farbe in einem MFMailComposeViewController auf iOS 7?
InformationsquelleAutor der Frage OemerA | 2013-10-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich dies und funktioniert perfekt in iOS7+
InformationsquelleAutor der Antwort Javi Campaña
Wie OemerA sagt - es gibt keinen Weg, um die Farben zu ändern. Mein problem war, dass in UIAppearance ich die hintergrund Farbe des Balkens zu blau, so dass dann die "Knöpfe" sind nicht mehr sichtbar. Da die E-Mail ist eigentlich nicht Teil der app macht es mehr Sinn, einen reset der nag-bar Aussehen, bevor Sie die E-mail-composer. Dies ist, wie ich es mache:
InformationsquelleAutor der Antwort timosdk
Wenn Sie die tintColor auf UIWindow es funktioniert völlig in Ordnung, ersten mal präsentiert die MFMailComposerViewController. Wie es scheint, verliert es die tintColor Informationen für die späteren Aufrufe.
Hinweis: diese ändert den Farbton von jedem element in Ihrem Fenster.
InformationsquelleAutor der Antwort dlinsin
Wenn Sie jemals untersuchen Sie die view-Hierarchie erstellt, indem ein MFMailComposeViewController du wirst sehen, dass es enthalten ist innerhalb einer Instanz von _UITextEffectsRemoteView. Sie haben null programmgesteuerten Zugriff auf alle Untersichten, ich bin zu raten ist, weil Sie wahrscheinlich im Besitz von einem separaten Prozess. Diese Untersichten Erben etwas über die verschiedenen UIAppearance proxies (z.B., bar, hintergrund, titleTextAttributes, etc), aber nichts mehr.
Den UIAppearance-Protokoll wird nicht erwähnt in der Dokumentation, aber es hat diese in den Kommentaren der header-Datei:
Sodass das Endergebnis ist, dass, während Sie können Steuern, die meisten Aspekte der Darstellung von MFMailComposeViewController erhalten Sie immer die system-Standard-blau "Farbton".
Bug-report: http://openradar.appspot.com/radar?id=6166546539872256
InformationsquelleAutor der Antwort Ryan
Swift 3.0
InformationsquelleAutor der Antwort Abhishek Jain
Als wurde darauf hingewiesen, ein paar mal, die Einstellung der Tönung auf die MFMailComposeViewController Navigationsleiste funktioniert nicht. Wenn Sie andere änderungen im Aussehen-set für die ganze app, der Farbton, die Farbe ist nur ein Aspekt des Problems, in unserer app, die wir haben, verändert sich die Farbe des Balkens und UIBarButton text Größe, so in der MFMailComposeViewController sehen wir dies:
Dem Auftritt in unserer app ist in einem StyleGuide Klasse mit einer Funktion
configureAppearanceModifiers
aufgerufen, aus dem AppDelegate.Nehmen wir das Beispiel von @timosdk ich habe eine zweite Methode:
Rufe ich diese vor der Initialisierung des MFMailComposeViewController und rufen Sie dann
configureAppearanceModifiers
wieder in diedidFinishWithResult
Delegierten vor dem schließen der ViewController, das funktioniert perfekt.InformationsquelleAutor der Antwort Leon