web-dev-qa-db-fra.com

Aligner l'image du bouton sur le bord droit de UIButton

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?

21
soleil

Sémantique: forcer la vue de gauche à droite fonctionne pour moi  enter image description here

43
Gilad Brunfman

Storyboard:

Onglet Attributs> Assurez-vous que l'onglet Contenu du contenu est sélectionné pour "image":

 1

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.

17
soulshined

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
14
Simon K. Gerges

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).

 enter image description here


ou Utilisez UIView contenant UIButton et UIImage, comme indiqué dans cet instantané.

  • Définissez le côté droit de l’image dans UIView et désactivez l’interaction de l’utilisateur, afin que l’action/appui de l’utilisateur soit transmise au bouton.
  • Bouton Ajouter de taille identique à UIView, dans UIView, avec une couleur de fond transparente et une image couvrant.
  • Définissez le décalage du contenu du bouton comme indiqué dans cet instantané.

 enter image description here

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.

9
Krunal

Propre façon de faire cela dans Swift

button.semanticContentAttribute = .forceRightToLeft

J'espère que cela t'aides

9
Md. Ibrahim Hassan

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

4
Tharzeez

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
    }
}
1
Musa almatri

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
0
Charly berthet