Il y a beaucoup de discussions sur l'alignement d'une image de bouton en fonction du texte du titre, mais je ne trouve rien sur l'alignement de l'image à droite du bouton.
Cela n'a aucun effet:
button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 50);
Comment peut-on aligner à droite l'image pour un bouton? Cela peut-il être fait dans le Storyboard?
Storyboard:
Onglet Attributs> Assurez-vous que l'onglet Contenu du contenu est sélectionné pour "image":
Ensuite, vous modifiez la propriété 'Left' pas à droite, ce que vous faites par programme. Donc, en d’autres termes, votre remplissage de la gauche
UIEdgeInsetsMake = TOP | GAUCHE | BAS | DROITE
Par programme:
button.imageEdgeInsets = UIEdgeInsetsMake(0, 100, 0, 0);
Remarque: vous devrez peut-être également modifier l'encart de vos titres, selon l'endroit où il se trouve par rapport à votre image.
J'ai trouvé un moyen délicat Mettre à jour les contraintes pour la UIImageView
du bouton
essaye ça
button.imageView?.trailingAnchor.constraint(equalTo: button.trailingAnchor, constant: -8.0).isActive = true
button.imageView?.centerYAnchor.constraint(equalTo: button.centerYAnchor, constant: 0.0).isActive = true
mais n'oubliez pas d'ajouter ceci pour rendre les contraintes efficaces
button.translatesAutoresizingMaskIntoConstraints = false
button.imageView?.translatesAutoresizingMaskIntoConstraints = false
Il y a plusieurs options différentes pour le faire.
Utiliser semanticContentAttribute
button.semanticContentAttribute = .forceRightToLeft
Vous pouvez également définir un attribut sémantique à partir de la disposition de l'interface (storyboard).
ou Utilisez UIView contenant UIButton et UIImage, comme indiqué dans cet instantané.
Cela facilitera la gestion des actions et des propriétés des boutons, ainsi que la personnalisation de la position et de la taille de l'image en fonction de vos besoins. Essaye ça.
Propre façon de faire cela dans Swift
button.semanticContentAttribute = .forceRightToLeft
J'espère que cela t'aides
en faire une sémantique par défaut i.e non spécifiée ou forcée de gauche à droite
et dans button.imageEdgeInsets le définir comme
UIEdgeInsets (en haut: 0, à gauche: self.view.frame.size.width - (la taille de l'image + l'espace d'alignement), en bas: 0, à droite: 0)
cela fera en sorte que quelle que soit la taille de la vue, il alignera toujours l'image du côté droit du bouton
Manière simple
Utilisation de l'extension pour définir l'image sur le côté droit avec un décalage personnalisé
extension UIButton {
func addRightImage(image: UIImage, offset: CGFloat) {
self.setImage(image, for: .normal)
self.imageView?.translatesAutoresizingMaskIntoConstraints = false
self.imageView?.centerYAnchor.constraint(equalTo: self.centerYAnchor, constant: 0.0).isActive = true
self.imageView?.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -offset).isActive = true
}
}
Juste comme ça:
btn.imageView?.translatesAutoresizingMaskIntoConstraints = false
btn.imageView?.centerYAnchor.constraint(equalTo: btn.centerYAnchor, constant: 0.0).isActive = true
btn.imageView?.trailingAnchor.constraint(equalTo: btn.trailingAnchor, constant: 0.0).isActive = true
btn.imageView?.contentMode = .right