Bitte sehen Sie sich den Screenshot unten an.
Ich habe alle Tönungsfarben des gleichen UIColor-Objekts für UINavigationBar, Suchleiste und Symbolleiste am unteren Rand festgelegt. Aber aus irgendeinem Grund ist die Farbe der Navigationsleiste etwas anders. Was könnte der Grund dafür sein?
Vielen Dank..
Der Unterschied zwischen Navigationsleiste und Suchleiste besteht darin, dass die Navigationsleiste durchscheinend ist. Das System wendet einen Standard-Alpha-Wert für die Navigationsleiste an.
self.navigationController.navigationBar.translucent = NO;
ausprobieren
UINavigationBar
hat ein seltsames Verhalten, wenn es um die Farbe geht, die Sie dort festgelegt haben. Wie andere Mitglieder darauf hingewiesen haben, müssen Sie den Booleschen Wert translucent
auf false
setzen. Dies ist jedoch nicht alles, damit Ihre Leiste der Farbe entspricht, die Sie einstellen möchten. Es wird nah sein, aber wenn Sie genau hinschauen, wird es nicht genau die Farbe sein, die Sie verwenden möchten. Um true color auf UINavigationBar
setzen zu können, müssen Sie wissen, was es tut.
Nehmen wir an, ich wollte meine UINavigationBar
auf diese coole Farbe Grün setzen.
Das wäre ein RGB-Wert von: R = 90 | G = 200 | B = 95.
Was UINavigationBar
tun wird, ist das integrierte Styling, indem dieses Grün "glänzend" wirkt. Das Ergebnis ist für uns, dass es unsere grünen RGB-Werte und up jeweils um den Faktor 20 nimmt.
Wenn Sie in die Nähe schauen, stimmt das grüne Quadrat nicht genau mit dem überein, das UINavigationBar
mit den gleichen RGB-Werten anzeigt. Das sieht nur etwas heller aus.
Um dies zu beheben, reduzieren Sie einfach die RBG-Werte um 20 für die Farbe, die Sie für die UINavigationBar
name __s Ihrer Anwendung verwenden möchten.
Also ist R = 90 | G = 200 | B = 95 wird zu R = 70 | G = 180 | B = 75.
Sie müssen Eigenschaft durchscheinend für Navigationsleiste deaktivieren
sie können es programmatisch mit der folgenden Zeile tun
self.navigationController?.navigationBar.isTranslucent = false
[~ # ~] oder [~ # ~]
Deaktivieren Sie einfach das Kontrollkästchen "Transluzent" im Storyboard. Sie finden es in den UINavigationBar-Eigenschaften von UINavigationController
Es unterscheidet sich durch den standardmäßigen UINavigationBar-Unschärfeeffekt. Ich kann vorschlagen, ein dehnbares Hintergrundbild mit einer Breite von 2px in Ihrer Farbe festzulegen. Etwas wie dieses:
UIImage *image = [UIImage imageNamed:@"yourBlueImage"];
image = [image stretchableImageWithLeftCapWidth:image.size.width / 2.0f topCapHeight:0.0f];
[yourNavBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
Es ist wie ein Trick, denn wenn Sie einen benutzerdefinierten backgroundImage-Weichzeichnungseffekt einstellen, wird die Farbe exakt angezeigt.
navigationBar.barStyle = UIBarStyle.blackOpaque
Arbeitete, um unerwünschte Überblendungen mit dem Hintergrund zu verhindern, wenn keine der vorherigen Antworten funktionierte (in iOS 9.3).
Ich hatte das gleiche problem wie der op. Nach mehreren Stunden fehlgeschlagener Versuche entschied ich mich, die Logik in meinem Code zu ändern:
Zuerst , setze die Hintergrundfarbe der Navigationsleiste:
navigationBar.barTintColor = UIColor.red
iOS macht das Rot etwas dunkler/heller, wie von anderen in diesem Thread beschrieben.
Zweitens , nimm die Farbe der Navigationsleiste und setze sie auf das, was du brauchst, in meinem Fall den Hintergrund der Zelle:
cell.backgroundColor = navigationBar.barTintColor
Jetzt werden die Farben gleich sein.
Ich habe jede Lösung ausprobiert, die in den Antworten hier erwähnt wird. Aber nichts wurde vollständig gelöst. Ich habe das gefunden:
Zunächst müssen Sie die Navigationsleiste auswählen und das Kontrollkästchen "Transluzent" deaktivieren. Es ist ganz oben.
Danach ist es fertig. Die Hintergrundfarbe ist immer noch falsch. Stellen Sie also nicht die Hintergrundfarbe ein, sondern die TintColor der NavBar. Sie können dies auf die gleiche Weise wie das Translucent tun. Die Möglichkeit, TintColor einzustellen, besteht aus 2 Elementen unter dem Kontrollkästchen "Transluzent".
Oder Sie setzen es mit Swift oder objC:
self.navigationController?.navigationBar.isTranslucent = false
navBar.barTintColor = UIColor.CustomColor.colorPrimary
Versuchen Sie dies, das funktioniert
navigationController? .navigationBar.shadowImage = UIImage () navigationController? .navigationBar.setBackgroundImage (UIImage (), für: .default)