6
votes

L'effet d'Uilabel est-il possible?

Je donne la frontière à Uilabel avec xxx

mais il n'y a pas d'espace entre le texte et la frontière.
Alors, comment puis-je définir des effets insettisés comme uibutton dans mon étiquette?


0 commentaires

4 Réponses :


20
votes

Placez l'étiquette dans une vue de conteneur et appliquez la bordure au conteneur.


2 commentaires

Pouvez-vous me donner du code pour utiliser l'étiquette dans ContainView ?? Je suis nouveau à ça ..


Faites un UIView, appliquez la bordure à cette vue et ajoutez l'Uilabel à la vue sous forme de sous-vision.



1
votes

Alternativement, sans utiliser d'étiquette, vous pouvez utiliser nstring méthode Taillewithfont: Forwidth: LinebreakMode: , qui renvoie la taille du texte. Ensuite, vous pouvez appeler nsstring drawinrect: withfont: linebreakMode: méthode, où votre rect serait celui obtenu à partir de la méthode Taillewithfont , augmenté par la marge souhaitée.


1 commentaires

Cela fonctionne aussi, mais vous perdez l'autre personnalisation et les options de commodité d'Uilabel, telles que la possibilité d'appeler Settext et Redraw, ce qui ne serait pas possible en utilisant la méthode de Maggie sans écrire une vue personnalisée.



18
votes

Vous pouvez sous-classer Uilabel et remplacer quelques méthodes:

Le premier vous donne des coins arrondis et une frontière. Vous pouvez modifier la largeur de la frontière, la couleur, etc. au besoin. P>

- (void) drawTextInRect:(CGRect)rect
{   
    UIEdgeInsets insets = {0,5,0,5};

    [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}


0 commentaires

1
votes

Vous pouvez également ajouter un espace dans le texte pour une solution très simple:

Code Objc (ajouté par S1M0N comme commentaire) P>

Label.text = " "+lbltext;


4 commentaires

Je n'ai pas baissé vous voter - cependant que vous avez probablement été voté car ce n'est pas valide objectif-c. Il n'y a pas d'opérateur de concaténate de chaîne comme si vous avez en Java et quelles que soient les autres langues qui utilisent un '+' pour concaténer le texte à un littéral à chaîne. De plus, les littéraux de chaîne Objective-C commencent par un signe @, il aurait donc été @ "". En plus de cela, même si cela a fonctionné - la solution n'est pas la plus pratique à tous les cas (tels que le texte multilingle), mais cela fonctionnerait pour le plus simple des cas.


J'utilise monoTouch (C #) pour iOS Development, mais vous avez raison que j'aurais dû mentionner que dans mon poste, car il est confus dans un poste d'objectif-C.


L'équivalent de cet objectif CORE-C est [Label Settext: [Nstring StringwithFormat: @ "% @", texte]];


C'est une solution aussi simple. Kudos monsieur!