Es gibt Zeiten, in denen Sie Ihr Originalbild in die Navigationsleiste einfügen und es etwas reicher machen möchten, oder? Wenn Sie zu diesem Zeitpunkt versuchen, dies auf die übliche Weise zu tun, wird es in durchgehendem Blau angezeigt.
·Ideal
·Wirklichkeit
Ich möchte ein Memorandum darüber aufbewahren, was ich tun kann, um dies zu vermeiden.
Versuchen Sie es zunächst wie gewohnt. Ist es so, wenn es in Code geschrieben ist?
override func viewDidLoad() {
super.viewDidLoad()
setupNavigationBar()
}
private func setupNavigationBar() {
navigationItem.title = "Hauptseite"
let button = UIButton(type: .system)
button.setImage(UIImage(named: "button_refresh"), for: .normal)
button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
let rightItem = UIBarButtonItem(customView: button)
navigationItem.rightBarButtonItem = rightItem
}
@objc private func buttonAction() {
print("Die Farbe des Knopfes ist seltsam! !! !!")
}
Eigentlich ist es schneller, es in Storyboard hinzuzufügen, aber da dies eine Gruppe ist, die in Code schreibt, mache ich das normalerweise (Iron's Wille).
Wenn Sie es vorerst so schreiben, wird das Schaltflächensymbol mit Blau gefüllt und Sie werden traurig sein.
Beim Schreiben von Code ist es in Ordnung, nur die Stelle neu zu schreiben, an der setImage auf die Schaltfläche gesetzt ist. Insbesondere sieht es so aus.
button.setImage(UIImage(named: "button_refresh")?.withRenderingMode(.alwaysOriginal), for: .normal)
UIImage hat Rendering-Modus,
automatic | Standard. Der Modus wird ausgewählt, wenn Sie das Bild verwenden |
alwaysOriginal | Zeigen Sie immer das Originalbild an |
alwaysTemplate | Dies hängt von der Tönungsfarbe der Schaltfläche usw. ab. |
Sie können drei angeben. Dieses Mal habe ich "alwaysOriginal" angegeben, da ich das Originalbild in der Navigationsleiste anzeigen möchte. Im Gegenteil, wenn Sie mit tintColor übereinstimmen möchten, können Sie "alwaysTemplate" angeben.
Für diejenigen unter Ihnen, die das Schreiben in Code als umständlich empfinden, gibt es jedoch eine direkte Möglichkeit, dies in Assets.xcassets zu tun. Öffnen Sie zuerst Assets.xcassets, wählen Sie das gewünschte Bild aus und dann
Schauen Sie sich das zweite "Renser As" oben rechts in den Image Set-Elementen an. Wenn nichts angegeben ist, sollte es "Standard" sein.
Den Rest kennst du schon. Wenn Sie den Wert von "Renser As" in "Original Image" ändern, wird dieser automatisch zu "Always Original", ohne "with Rendering Mode" in Ihrem Code zu verwenden.
Deshalb war es die Einstellungsmethode für den Rendering-Modus von UIImage. Auch wenn es sich um eine Funktion handelt, die Sie unerwartet verwenden, können Sie sich möglicherweise nicht versehentlich daran erinnern (4 Verluste). Seien Sie also vorsichtig.
Recommended Posts