Ich hatte die Anforderung, den Text der Zurück-Schaltfläche zu entfernen und nur den hinteren Chevron in der Navigationsleiste zu belassen.
Einige Optionen, auf die ich stieß, waren das Festlegen des Titels des Ansichtssteuerelements zu einer Zeichenfolge mit einem Leerzeichen hinzufügen und auch eine benutzerdefinierte Schaltfläche hinzufügen.
Die benutzerdefinierte Schaltfläche schien auch die native Swipe-to-Pop-Geste zu entfernen, also habe ich mich für diesen Ansatz entschieden.
Code: Select all
extension UINavigationBar {
func applyAppearance(backgroundColor: UIColor, textColor: UIColor) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = backgroundColor
appearance.shadowColor = .clear
appearance.titleTextAttributes = [.foregroundColor: textColor]
// This removes the text from all back buttons
let backButtonAppearance = UIBarButtonItemAppearance(style: .plain)
backButtonAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.clear]
appearance.backButtonAppearance = backButtonAppearance
tintColor = textColor
standardAppearance = appearance
scrollEdgeAppearance = appearance
compactScrollEdgeAppearance = appearance
}
}
Während dadurch der Text entfernt wird, besteht das Problem, das ich jetzt habe, darin, dass der Pfeil allein mit dem Rest meines Inhalts übereinzustimmen scheint:
Also begann ich nach Möglichkeiten zu suchen, diesen Abstand zu erhöhen Polsterung/Rand links auf der Rückseite Chevron
Ich habe Folgendes versucht:
Code: Select all
// This didn't change the back button's position but impacted my search bar
layoutMargins = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 0)
// This did nothing as well, probably as the name suggests, it changes the text position rather than the image
let backButtonAppearance = UIBarButtonItemAppearance(style: .plain)
backButtonAppearance.normal.titlePositionAdjustment = UIOffset(horizontal: 20, vertical: 0)
Ich wollte auch das Symbol der Zurück-Schaltfläche ändern, ohne eine benutzerdefinierte Schaltfläche erstellen zu müssen, aber nichts davon hat funktioniert:
Code: Select all
extension UINavigationBar {
func applyAppearance(backgroundColor: UIColor, textColor: UIColor) {
let appearance = UINavigationBarAppearance()
if let image = UIImage(named: "chevron.left")?.withRenderingMode(.alwaysOriginal) {
appearance.setBackIndicatorImage(image, transitionMaskImage: image)
}
standardAppearance = appearance
scrollEdgeAppearance = appearance
compactScrollEdgeAppearance = appearance
}
}
Ich habe sogar versucht, dies auf App-Ebene anzuwenden:
Code: Select all
if let image = UIImage(systemName: "chevron.down")?.withRenderingMode(.alwaysOriginal) {
UINavigationBar.appearance().backIndicatorTransitionMaskImage = image
UINavigationBar.appearance().backIndicatorImage = image
}
Keiner der oben genannten Codes hat mir dabei geholfen, das Bild der Zurück-Schaltfläche oder die Position zu aktualisieren.
Eine Frage, die Sie vielleicht stellen könnten, ist, ob ich anrufe Dies ist an der richtigen Stelle, es geschieht nicht beim Start der App, sondern wenn der Nav Controller initialisiert wird und die meisten meiner anderen Stile angewendet werden.
Kann mir bitte jemand einen Vorschlag machen, was ich ändern kann? Das Bild und die Position der Zurück-Schaltfläche?
Ich möchte nicht verlieren die Swipe-to-Pop-Geste, daher zögere ich etwas, eine benutzerdefinierte Navigationsleistenschaltfläche zu erstellen.
Ich kann mir Apps wie Medium und Spotify vorstellen, die über ein eigenes Navigations-Zurück-Schaltflächenbild, benutzerdefinierte Auffüllung usw. verfügen die Swipe-to-Pop-Geste.
Ich hatte die Anforderung, den Text der Zurück-Schaltfläche zu entfernen und nur den hinteren Chevron in der Navigationsleiste zu belassen.
Einige Optionen, auf die ich stieß, waren das Festlegen des Titels des Ansichtssteuerelements zu einer Zeichenfolge mit einem Leerzeichen hinzufügen und auch eine benutzerdefinierte Schaltfläche hinzufügen.
Die benutzerdefinierte Schaltfläche schien auch die native Swipe-to-Pop-Geste zu entfernen, also habe ich mich für diesen Ansatz entschieden.
[code]extension UINavigationBar {
func applyAppearance(backgroundColor: UIColor, textColor: UIColor) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = backgroundColor
appearance.shadowColor = .clear
appearance.titleTextAttributes = [.foregroundColor: textColor]
// This removes the text from all back buttons
let backButtonAppearance = UIBarButtonItemAppearance(style: .plain)
backButtonAppearance.normal.titleTextAttributes = [.foregroundColor: UIColor.clear]
appearance.backButtonAppearance = backButtonAppearance
tintColor = textColor
standardAppearance = appearance
scrollEdgeAppearance = appearance
compactScrollEdgeAppearance = appearance
}
}
[/code]
Während dadurch der Text entfernt wird, besteht das Problem, das ich jetzt habe, darin, dass der Pfeil allein mit dem Rest meines Inhalts übereinzustimmen scheint:
[img]https://i.sstatic.net/GssvJm5Q.png[/img]
Also begann ich nach Möglichkeiten zu suchen, diesen Abstand zu erhöhen Polsterung/Rand links auf der Rückseite Chevron
Ich habe Folgendes versucht:
[code]// This didn't change the back button's position but impacted my search bar
layoutMargins = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 0)
// This did nothing as well, probably as the name suggests, it changes the text position rather than the image
let backButtonAppearance = UIBarButtonItemAppearance(style: .plain)
backButtonAppearance.normal.titlePositionAdjustment = UIOffset(horizontal: 20, vertical: 0)
[/code]
Ich wollte auch das Symbol der Zurück-Schaltfläche ändern, ohne eine benutzerdefinierte Schaltfläche erstellen zu müssen, aber nichts davon hat funktioniert:
[code]extension UINavigationBar {
func applyAppearance(backgroundColor: UIColor, textColor: UIColor) {
let appearance = UINavigationBarAppearance()
if let image = UIImage(named: "chevron.left")?.withRenderingMode(.alwaysOriginal) {
appearance.setBackIndicatorImage(image, transitionMaskImage: image)
}
standardAppearance = appearance
scrollEdgeAppearance = appearance
compactScrollEdgeAppearance = appearance
}
}
[/code]
Ich habe sogar versucht, dies auf App-Ebene anzuwenden:
[code]if let image = UIImage(systemName: "chevron.down")?.withRenderingMode(.alwaysOriginal) {
UINavigationBar.appearance().backIndicatorTransitionMaskImage = image
UINavigationBar.appearance().backIndicatorImage = image
}
[/code]
Keiner der oben genannten Codes hat mir dabei geholfen, das Bild der Zurück-Schaltfläche oder die Position zu aktualisieren.
Eine Frage, die Sie vielleicht stellen könnten, ist, ob ich anrufe Dies ist an der richtigen Stelle, es geschieht nicht beim Start der App, sondern wenn der Nav Controller initialisiert wird und die meisten meiner anderen Stile angewendet werden.
Kann mir bitte jemand einen Vorschlag machen, was ich ändern kann? Das Bild und die Position der Zurück-Schaltfläche?
Ich möchte nicht verlieren die Swipe-to-Pop-Geste, daher zögere ich etwas, eine benutzerdefinierte Navigationsleistenschaltfläche zu erstellen.
Ich kann mir Apps wie Medium und Spotify vorstellen, die über ein eigenes Navigations-Zurück-Schaltflächenbild, benutzerdefinierte Auffüllung usw. verfügen die Swipe-to-Pop-Geste.