2012-12-30 4 views
1

J'essaie de créer un UIButton très fin avec la taille = CGSizeMake(75, 23) pour adapter exactement une image de fond personnalisée. Et j'aimerais que le bouton ait un titre. Après avoir appelé le setTitle:forState:, le bouton est redimensionné pour tenir compte du rembourrage autour du titre, en vissant l'image d'arrière-plan (c'est-à-dire en provoquant un pavage très inconvenant). J'ai placé la police de titre à une petite taille dans la sous-vue UILabel, donc ce n'est pas la police qui cause le problème mais le remplissage. Ainsi, je voudrais supprimer ce rembourrage. Les valeurs par défaut des propriétés contentEdgeInsets, imageEdgeInsets et titleEdgeInsets de UIButton sont tous UIEdgeInsetsZero, donc je suppose que le remplissage est quelque part dans la sous-vue UILabel. Si oui, je pense que je peux l'éliminer en sous-classant UILabel et en remplaçant textRectForBounds:limitedToNumberOfLines: mais je ne suis pas sûr (et je serais heureux d'entendre quelqu'un qui a essayé cela). En tout cas, je cherche un moyen plus facile.iOS/Obj-C: Suppression du remplissage des titres UIButton

J'ai cherché et cherché et n'ai rien trouvé.

Des suggestions?

+0

Avez-vous essayé régler le cadre du bouton après avoir défini le titre? – lnafziger

+0

Utilisez-vous le format PNG pour les boutons? Essayez d'ajouter l'étiquette sur le fichier PNG lui-même, alors vous pouvez éviter tout bourrage que l'étiquette provoque. Cela signifie bien sûr que vous perdez la possibilité de changer les étiquettes de boutons à la volée. –

+0

@lnafziger yep, essayé cela en vain, malheureusement. –

Répondre

0

Cela fonctionnerait.

J'ai recommandé cet outil avant, mais il est un travailleur miracle :-)

OBShapedButton

Il prendra soin de votre problème de transparence Cela devrait résoudre votre problème :-)

+0

Merci @JeffKranenburg, 'OBShapedButton' semble être une bonne solution et cela résout le problème de transparence, mais je vais suspendre la mise en œuvre à moins que je ne trouve pas une autre solution, car il y aura probablement une perte de performance (il y aura plus de vingt instances de ce bouton sur une vue à un moment donné). –

+0

Je vois ce que vous voulez dire - J'ai une application et il utilise 8 instances sur l'écran de démarrage. Je n'ai rien remarqué. Mais je suppose qu'il doit y avoir des concessions mutuelles. Même si vous l'appliquez maintenant jusqu'à ce que vous trouviez une meilleure solution. –

Questions connexes