webentwicklung-frage-antwort-db.com.de

UINavigationBar Hintergrundfarbe nicht genau UIColor, auf den ich ihn eingestellt habe

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.. 

screenshot

29
özg

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

58
Danyun Liu

UINavigationBarhat 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 translucentauf falsesetzen. 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 UINavigationBarsetzen zu können, müssen Sie wissen, was es tut.

Nehmen wir an, ich wollte meine UINavigationBarauf diese coole Farbe Grün setzen.

 enter image description here

Das wäre ein RGB-Wert von: R = 90 | G = 200 | B = 95.

Was UINavigationBartun 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.

 enter image description here

Wenn Sie in die Nähe schauen, stimmt das grüne Quadrat nicht genau mit dem überein, das UINavigationBarmit 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 UINavigationBarname __s Ihrer Anwendung verwenden möchten.

Also ist R = 90 | G = 200 | B = 95 wird zu R = 70 | G = 180 | B = 75.

 enter image description here

26
Brandon A

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

enter image description here

4
Harshad Madaye

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.

4
Krivoblotsky
navigationBar.barStyle = UIBarStyle.blackOpaque

Arbeitete, um unerwünschte Überblendungen mit dem Hintergrund zu verhindern, wenn keine der vorherigen Antworten funktionierte (in iOS 9.3).

2
atraczyk

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.

1
Tomas

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
1
Yvonne Marggraf

Versuchen Sie dies, das funktioniert

navigationController? .navigationBar.shadowImage = UIImage () navigationController? .navigationBar.setBackgroundImage (UIImage (), für: .default)

0
abhi