4 Stimmen

iPad - Farbe des Popover-Rahmens

Ich habe also eine Split-View-Anwendung, an der ich arbeite, und bin auf einen seltsamen UI-Bug gestoßen. Hier geht mein bester Versuch, es zu erklären. Wenn ich die App im Querformat lade, ist die obere Navigationsleiste des Root-Controllers die richtige Farbe. Ich tue dies in der Methode ViewWillAppear von rootView:

self.rvBar.tintColor = [UIColor colorWithRed:59.0/255
                               green:115.0/255
                    blue:185.0/255
                       alpha:1];

Wenn ich nun das Gerät drehe und die Ansicht über ein Popover anzeige, ist das Popover schwarz. Wissen Sie, wie man die Farbe des Popovers in das gleiche Blau ändern kann? Ich habe versucht, dies in der willHide/ShowViewController Methoden im Delegat des Split View Controllers, aber nichts scheint zu funktionieren.

Jetzt Teil zwei, wenn ich zurück ins Querformat drehe, wird die Zeile oben wieder aufgerufen, aber anstatt den blauen Balken anzuzeigen, ist er jetzt grau! Hat jemand schon einmal erlebt, dass sich ein Splitview so verhält, und wenn ja, was muss man tun, um das zu beheben? Vielen Dank im Voraus.

2voto

grandouassou Punkte 2528

Ich habe dies an einem einfachen SplitViewController-Projekt (im RootViewController) ausprobiert:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:59.0/255
                                                                        green:115.0/255
                                                                         blue:185.0/255
                                                                        alpha:1];
}

und es funktioniert gut. Wenn Sie sagen, dass das Popover schwarz bleibt, meinen Sie, dass der Hintergrund des Titels schwarz ist? (bei mir ist er blau und die Popover-Ränder sind schwarz).

Vielleicht kommt das Problem von anderswo, wie Sie Ihre rvBar-Eigenschaft festlegen?

1voto

gabaum10 Punkte 3759

Ich habe die Lösung für dieses Problem gefunden, falls sich noch jemand wundert.

Nachdem ich etwas gegraben hatte, entdeckte ich, dass es einen Apple-Bug gibt, der die Änderung der UIToolBar tintColor-Eigenschaft deaktiviert, und dass sie in jedem Zustand stecken bleibt, in dem sie sich befindet. Ich musste eine Nachricht an die tintColor-Eigenschaft senden, um ihr mitzuteilen, dass sie änderbar ist.

extern id objc_msgSend (id, SEL, BOOL);
objc_msgSend([(UINavigationController *)aViewController navigationBar], @selector(_setDisableCustomTint:), NO);
/* Set the tintColor again */
[(UINavigationController *)aViewController navigationBar].tintColor = [UIColor colorWithRed:59.0/255
                                                                                      green:115.0/255
                                                                                       blue:185.0/255
                                                                                      alpha:1];

Das ist natürlich nicht akzeptabel, wenn Sie Ihre Anwendung beim Apple Store einreichen wollen, aber für meine Zwecke hat das genügt. Hoffentlich hilft das einigen von euch da draußen...

0voto

WrightsCS Punkte 50185

Sie können die Popover 's tintColor ist die Eigenschaft nicht vorhanden.

Weitere Informationen zu Popover's finden Sie auf der UIPopoverController Class Reference .

0voto

Wytchkraft_corp Punkte 11

Sie können auch die Navigationsleiste (des Rootviewcontrollers) über den Interface Builder ändern; wählen Sie einfach die Navigationsleiste aus der Liste auf der linken Seite aus und ändern Sie die Farbeigenschaft, indem Sie eine rgb-Matrix oder ein anderes Mittel Ihrer Wahl auswählen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X