11
votes

Comment mettre en évidence le texte en Uilabel - iOS

Je veux juste mettre uniquement en évidence le texte dans uilabel , j'ai essayé en donnant BackgroundColor pour l'étiquette, mais il met en surbrillance que les espaces vides ne semblent pas aussi bien. Il y a donc un moyen de mettre en évidence le texte sans redimensionner uilabel .

Vérifiez l'image, voici les étiquettes plus grandes que le texte (centre aligné)

Entrez la description de l'image ici

merci.


10 commentaires

Vous devrez utiliser un nsattributedstring .


@Mikikeweller pouvez-vous donner plus de détails ...


Je pense que vous voulez que le fond soit clair. Ensemble Label.backgroundColor = [Uicolor ClearColor]; Label.HighlighteDtextColor = [Uicolor GreenLor];


Vous ajoutez une étiquette dans .xib ou programmatiquement?


@ PM444 XIB UNIQUEMENT, mais je peux contrôler par programmation.


Donc, vous voulez une couleur grise comme base d'arrière-plan de votre texte et non comme étiquette de fond de fond que je suis raison?


@ PM444 Ouais. Besoin de mettre en évidence uniquement le texte.


Ensemble Label Sizetofit et définissez le cadre pour une position appropriée. Après avoir défini la couleur de fond de celui-ci.


Downvotor Demande à vous s'il vous plaît mentionner le commentaire?


J'ai répondu à la même question ici: Stackoverflow.com/a/41161425/1980246


4 Réponses :


1
votes

Essayez ceci

​​ Mtlabel P>

    MTLabel *label4 = [MTLabel labelWithFrame:CGRectMake(20, 270, 250, 60) 
                                  andText:@"This label is highlighted, has a custom line height, and adjusts font size to fit inside the label."];
        [label4 setLineHeight:22];
        [label4 setFont:[UIFont fontWithName:@"Helvetica" size:30]];
        [label4 setAdjustSizeToFit:YES];
        [label4 setMinimumFontSize:15];
        [label4 setFontHighlightColor:[[UIColor orangeColor] colorWithAlphaComponent:0.5]];
        [self.view addSubview:label4];


0 commentaires

-3
votes

Vous pouvez avoir un uiimageview strong>, définissez sa couleur de fond de votre choix puis placez votre Uilabel fort> dessus. Cela résoudra sûrement votre problème. Voici le code de contournement:

 UIImageView * imgView = [[UIImageView alloc]initWithFrame:CGRectMake(10, 10, 100, 40)];
 [imgView setBackgroundColor:[UIColor brownColor]];
 [self.view addSubview:imgView];


UILabel * label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 40)];
[label setBackgroundColor:[UIColor clearColor]];
[label setTextAlignment:UITextAlignmentCenter];
label.text = @"My Label";
[imgView addSubview:label];


[label release];
[imgView release];


1 commentaires

S'il vous plaît mentionner la raison du vote en baisse !! Donc, je peux corriger ma réponse.



3
votes

Ceci ajoutera une sous-évaluation derrière le texte, avec la taille correcte: xxx

et n'oublie pas: [étiquette SetbackColor: [Uicolor ClearColor]];


2 commentaires

Cela ne fonctionnera pas correctement si le texte enveloppe plusieurs lignes. Cette vue verte ne peut former que des rectangles simples. Si la deuxième ligne n'a qu'un mot, toute la ligne sera mise en surbrillance.


C'est vrai, mais si vous devez prendre en charge tout iOS <6 et ne pouvez pas utiliser nsmutableattributedstring , cela peut être la solution la plus simple.



22
votes

La plupart des autres solutions ne considèrent pas le texte qui couvre plusieurs lignes tout en soulignant que la mise en surbrillance du texte, et ils sont tous assez hacky impliquant des sous-espions supplémentaires.

Une solution iOS 6 et ultérieure consiste à utiliser des chaînes attribuées: < / p> xxx


4 commentaires

Je n'en ai aucune idée de NsmutaLeAttributedstring encore, de toute façon sa fonction de travail. Merci.


J'ai essayé le processus ci-dessus. Cela n'a pas bien fonctionné avec moi. : | i.imgur.com/xhvl9q.png?1


Cela ne fonctionne pas comme prévu par la question: il ajoutez également de la couleur d'arrière-plan aux espaces vides créés par Word Eppostic. Vérifiez: Mettez en surbrillance uniquement sur le texte d'un Uilabel


ne fonctionnera pas bien avec des textes multilignes si vous souhaitez mettre en évidence le texte et non les espaces vides