Avere un pulsante nella barra di navigazione con Immagine e testo è piuttosto difficile. Soprattutto dopo aver introdotto un nuovo mal di testa con UIBarButtonItem posizione in iOS 11: iOS 11 - UIBarButtonItem horizontal position
È possibile effettuare uno dei due pulsanti con l'immagine o un pulsante con il testo, ma non un pulsante con entrambi. Ho anche provato due UIBarButtonItem insieme, uno con l'immagine e l'altro con il testo - non ha ancora un bell'aspetto e il loro UIStackView non può essere facilmente accessibile per la modifica.
inaspettatamente ho trovato una soluzione semplice semplice:
1) progettare il tasto come vista in Interface Builder. Nel mio caso è all'interno di target UIViewController e accessibile tramite IBOutlet per semplicità
2) imposta il vincolo Spazio iniziale per l'immagine come negativo, potresti anche voler impostare il colore di sfondo della vista su. Chiaro.
3) lo usano:
@IBOutlet var backButtonView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let backButton = UIBarButtonItem(customView: self.backButtonView)
self.backButtonView.heightAnchor.constraint(equalToConstant: 45).isActive = true
self.backButtonView.widthAnchor.constraint(equalToConstant: 75).isActive = true
self.navigationItem.leftBarButtonItem = backButton
}
Questo è tutto. Non è necessario utilizzare il trucco con spacer negativo per iOS 10 o il trucco con imageInsets per iOS 11 (che funziona solo se si dispone di un'immagine e non funziona per immagine + testo, BTW).
@Randy Vuoi dire fare un UIView e aggiungere un'etichetta e ImageView e impostare questo? – Conor