donner une marge de texte / rembourrage pour le UiButton sur l'Iphone
J'ai de la mise en page suivante, et je vais essayer d'ajouter une marge à gauche et à droite..
les contrôles sont certains handicapés Uibutton.
Mon code pour la création d'un bouton est présent:
UIButton *buttonTime = [[UIButton alloc] initWithFrame:CGRectMake(90, 10, 50, 20)];
[buttonTime setBackgroundImage:[[UIImage imageNamed:@"bubble.png"] stretchableImageWithLeftCapWidth:9 topCapHeight:13] forState:UIControlStateDisabled];
[buttonTime setTitle:@"27 feb, 2011 11:10 PM" forState:UIControlStateDisabled];
[buttonTime setTitleColor:[UIColor blackColor] forState:UIControlStateDisabled];
buttonTime.titleLabel.font=[UIFont fontWithName:@"Helvetica" size:8.0];
buttonTime.titleLabel.lineBreakMode= UILineBreakModeWordWrap;
[buttonTime setEnabled:FALSE];
[scrollView addSubview:buttonTime];
[buttonTime release];
Vous devez vous connecter pour publier un commentaire.
Utiliser cette propriété pour redimensionner et repositionner le tracé effectif de rectangle pour le titre du bouton. Vous pouvez spécifier une valeur différente pour chacun des quatre encarts (en haut, à gauche, en bas, à droite). Une valeur positive se rétrécit, ou encarts, ce bord—le rapprocher du centre de la touche. Une valeur négative se développe, ou dilate, ce bord. Utiliser le UIEdgeInsetsMake fonction pour construire une valeur pour cette propriété. La valeur par défaut est UIEdgeInsetsZero.
UIButton
sur le redimensionnement du texte police taille lorsque sa longueur est trop long. Par exemple, ce posttitleEdgeInsets
à(0, 10, 0, 0)
donnera le titre uniquement 90px d'affichage et de tronquer le texte.margin
oupadding
en css. Si le texte est tronqué, c'est une autre histoire.titleEdgeInsets
.Toro réponse est parfait. Vous pouvez également définir les valeurs d'encart de la Taille de l'Inspecteur à l'intérieur de storyboard ou xib.
Réglage de la contenu des encarts de permettra d'éviter la
UIButton
's le titre de réduction/tronquée, donnant le texte de la marge d'un rembourrage.Le défi avec l'acceptées réponse est que la définition de la
titleEdgeInsets
est la limitation, comme indiqué dans la documentation d'Apple:Cela signifie que le réglage de la marge ne fonctionne que si le bouton est explicitement ajuster la taille de l'étiquette du titre et les marges. Si un titre est trop long ou les marges trop grandes, le titre du texte peuvent être coupées. C'est OK pour un bouton dont le titre vous savez au moment de la compilation, mais pour une longueur variable bouton titre, peut poser un problème.
Une autre approche de la variable accueillir titre de la longueur est de laisser le
titleEdgeInsets
comme valeur par défaut. Une fois sur le bouton du titre du jeu, ajouter explicite de la largeur et de la hauteur des contraintes qui peuvent accueillir le bouton de l'étiquette du titre et des marges supplémentaires. Par exemple:Positionner le bouton sans ajout de hauteur ou de la largeur de contraintes et il apparaîtra correctement quel que soit leur titre de longueur.
[button.widthAnchor constraintEqualToConstant:button.titleLabel.intrinsicContentSize.width + margin * 2.0].active = YES;
swift 4
Remarque utilisez contentEdgeInsets pas titleEdgeInsets
Qui fera le bouton envelopper de son texte et de le garder une ligne aussi longtemps que il ya un espace pour lui + ajout de quelques rembourrage autour
Cette option est viable si elle n'est pas trop gênant d'utiliser un UIButton sous-classe
Ensuite utiliser
titleEdgeInsets
comme souhaitéce lien fonctionne comme un charme avec
contentHorizontalAlignment
propriétéJ'ai trouvé un facile/hacky façon d'ajouter des bordures de texte des boutons (et avoir de la marge gauche/droite):
Bouton créer avec le titre.
Bouton placer dans le plan de montage, aligner où vous voulez et ajoutez ensuite forcé la largeur de la contrainte qui est un nombre pair (j'ai utilisé 20, de sorte qu'il ajoute 10 points sur chaque côté). Cela va forcer la frontière autour de la largeur que vous avez créé.
Utiliser le code pour créer une bordure. par exemple:
Jeu à gauche titleInset à 2 par le biais de l'éditeur (maintenant moins de la Taille de l'Inspecteur) ou par code. Cela semble centrer le texte, mais cette valeur peut être différente pour différents textes et la taille du texte.
Ce post est pour XCode 8.1 et Swift 3.
Avec les solutions ci-dessus, une partie du texte ont été coupés si vous avez une bordure autour du bouton. Par exemple, une étiquette sur le bouton nommé "Supprimer quelque chose" finit par montrer "Dele...ing". Si vous rencontrez ce problème, c'est la solution: