J'ai de la difficulté à ajouter du remplissage à gauche sur un UIButton
. J'ai un UIButton
avec UIControlContentHorizontalAlignmentLeft
. Je veux que le texte soit affiché sur le côté gauche mais il est trop à gauche. quand je donne la frontière, ça n'a pas l'air bien. Je voudrais donner un peu de remplissage sur le texte à propos de 5px comme en CSS. J'ai cherché sur Google la solution mais je ne trouve pas de solution particulière pour UIButton
. Merci d'avance pour votre aide.
titleEdgeInsets Marges d'insertion ou de sortie des bords du rectangle de dessin du titre du bouton.
@property (nonatomic) UIEdgeInsets titleEdgeInsets
Discussion Utilisez cette propriété pour redimensionner et repositionner le rectangle de dessin effectif pour le titre du bouton. Vous pouvez spécifier une valeur différente pour chacune des quatre encarts (haut, gauche, bas, droite). Une valeur positive réduit ou insère ce bord, le rapprochant du centre du bouton. Une valeur négative développe ou confine ce bord. Utilisez la fonction UIEdgeInsetsMake pour créer une valeur pour cette propriété. La valeur par défaut est UIEdgeInsetsZero.
Disponibilité Disponible dans iOS 2.0 et versions ultérieures.
Déclaré en UIButton.h
Essayez ceci :)
[myButton setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 5.0, 0.0, 0.0)];
De plus, si vous utilisez un bouton personnalisé, les encarts de contenu et les encarts d'image existent.
Si vous êtes arrivé ici à la recherche de Swift. Ceci est valide Swift 3.0 ????
myButton.titleEdgeInsets = UIEdgeInsets(top: 0.0, left: 5.0, bottom: 0.0, right: 0.0)
Vous pouvez aussi le définir directement. Il est utile si vous souhaitez utiliser une ou deux propriétés.
myButton.titleEdgeInsets.top = 0
myButton.titleEdgeInsets.left = 5
myButton.titleEdgeInsets.bottom = 0
myButton.titleEdgeInsets.right = 0
Dans Xcode 6, vous pouvez spécifier un encart de titre dans IB:
Voici une meilleure réponse à:
Code:
extension UIButton {
func addLeftPadding(_ padding: CGFloat) {
titleEdgeInsets = UIEdgeInsets(top: 0.0, left: padding, bottom: 0.0, right: -padding)
contentEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: padding)
}
}
Usage:
myButton.addLeftPadding(10)
Voici un autre exemple comment résoudre ceci:
[self.myButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
float padding_button = 6.0f;
UIEdgeInsets titleInsets = UIEdgeInsetsMake(0.0f, padding_button, 0.0f, -padding_button);
UIEdgeInsets contentInsets = UIEdgeInsetsMake(padding_button, 0.0f, padding_button, 0.0f);
CGFloat extraWidthRequiredForTitle = titleInsets.left - titleInsets.right;
contentInsets.right += extraWidthRequiredForTitle;
[self.myButton setTitleEdgeInsets:titleInsets];
[self.myButton setContentEdgeInsets:contentInsets];
[self.myButton sizeToFit];
Aussi, si votre bouton a une image, vous pouvez simplement ajouter:
[self.myButton setImage:[UIImage imageNamed:@"YourImage.png"] forState:UIControlStateNormal];
Bonne chance!
_myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
_myButton.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);