web-dev-qa-db-fra.com

Modifiez le texte d'un UIButton (remplissage) par programme dans Swift

J'apprends toujours Swift et je ne connais pas Objective-C. J'ai vu que pour modifier le texte d'un bouton, il fallait utiliser titleEdgeInsets par programme, mais je ne sais pas trop comment procéder. utilise le.

Je voudrais changer le texte dans le bouton (padding) en bas et à gauche et à droite.

Merci pour vos réponses et/ou exemples!

39
KellysOnTop23

Toujours valable pour: iOS 12/Xcode 10/Swift 4.2/OSX 10.13.2


iOS 9.1/Xcode 7.1/Swift 2.1/OSX 10.10.5:

La méthode titleEdgeInsets n'a pas fonctionné pour moi. Le cadre de mon bouton épouse étroitement le texte (je n'ai pas spécifié de taille de cadre), qui a une couleur d'arrière-plan rouge. Après avoir fait:

 myButton.titleEdgeInsets = UIEdgeInsetsMake(10,10,10,10)

le fond rouge se rétrécissait vers l'intérieur de 10 pixels de chaque côté, ce qui signifie qu'une partie du texte se trouvait en dehors du fond rouge. L'utilisation de valeurs négatives n'a aucun effet sur la taille de l'image d'origine.

J'ai été capable de faire le tour du texte, rendant ainsi le cadre plus grand, en faisant:

myButton.contentEdgeInsets = UIEdgeInsetsMake(5,5,5,5) 
110
7stud

iOS 10 et Swift 3

Testé et fonctionne sur IOS 11 et Swift 4.

refineButton.contentEdgeInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)
48
Dev2rights

Vous pouvez ajouter un remplissage en haut, à gauche, à droite et en bas en faisant ces lignes de code.

button.titleEdgeInsets.left = 10; // add left padding.
button.titleEdgeInsets.right = 10; // add right padding.
button.titleEdgeInsets.top = 10; // add top padding.
button.titleEdgeInsets.bottom = 10; // add bottom padding.
26
Ali Raza

Vous pouvez également le faire dans le storyboard:
enter image description here

16
Nik Kov

Pour iOS 9.1/Xcode 7.1/Swift 2.1

@IBOutlet weak var ratingButton: UIButton!

override func viewDidLoad() {
    ratingButton.contentEdgeInsets = UIEdgeInsets(top:15,right:10,bottom:15,left:10)

    super.viewDidLoad()
}
4
Hannes