J'ai rencontré un problème de route en essayant de changer le bouton de la barre d'outils de type UIBarButtonItem pendant l'exécution.Modifier le bouton de la barre d'outils
J'ai créé par programme une barre d'outils pour une vue de texte donnée et je veux changer l'image du bouton quand il est pressé, comme s'il avait une bascule sur l'image et une autre.
Je vais vous expliquer:
Ici, je crée la barre d'outils avec les boutons de votre choix
func configureToolbar(forTextView textView: UITextView) {
toolbar?.barStyle = UIBarStyle.default
toolbar?.items = [
UIBarButtonItem.init(image: UIImage.init(named: "bold_unselected"), style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.didTapBold(sender:))),
UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil),
UIBarButtonItem(title: "Italic", style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.didTapItalic(sender:))),
UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil),
UIBarButtonItem(title: "Underline", style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.dismissKB))]
toolbar?.sizeToFit()
for (index,item) in (toolbar?.items?.enumerated())! {
item.tag = index
}
// Adds a view as a upper border line
let border = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 0.5))
border.backgroundColor = UIColor.lightGray
toolbar?.addSubview(border)
// Configures the toolbar
toolbar?.backgroundColor = UIColor.white
toolbar?.barTintColor = UIColor.white
toolbar?.tintColor = UIColor.black
toolbar?.clipsToBounds = true
// Adds to the super view;
textView.inputAccessoryView = toolbar
}
Voici la fonction du bouton gras
func didTapBold(sender: UIBarButtonItem) {
typeface.isBold = typeface.isBold! ? false : true // true -> false -> true
toggleButton(button: sender, status: typeface.isBold!)
}
est là où je veux pour changer le bouton 'status' ON - OFF
func toggleButton(button: UIBarButtonItem, status: Bool) {
// changes the button appearance
switch button.tag {
case 0:
print("bold")
print("status \(status)")
if status {
button.image = UIImage.init(named: "bold_selected")
} else {
button.image = UIImage.init(named: "bold_unselected")
}
case 2:
print("bla bla bla")
case 4:
print("bla bla bla 2")
default:
print("default value called")
}
}
Pour une raison quelconque, je ne peux pas changer l'image de celui que je veux, mais je peux changer les uns aux autres. J'ai lu les lignes directrices de l'interface utilisateur et je ne trouve pas la taille d'image recommandée pour la barre d'outils, mais après avoir lu dans certains sites Web 20x20, quelqu'un peut-il confirmer?
Il y a l'image par défaut et celle sélectionnée.
MISE A JOUR D'une certaine manière, il semble que je ne peux pas ajouter une icône de couleur/image à la barre d'outils. Juste essayé d'ajouter une icône différente et il s'est juste présenté comme un point noir.
BTW, mes images/icônes sont 64x64 Je ne sais pas si cela cause le problème, je ne le pense vraiment pas –
Quelqu'un aide-t-il? :) –