Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как выделить только текст в UILabel - IOS

Автор вопроса: NewbeeОтветов: 4

Я просто хочу выделить только текст в UILabel, я пытался указать backgroundColor для метки, но выделение пустых мест также выглядит не очень хорошо. Итак, есть ли способ выделить текст без изменения размера UILabel.

Пожалуйста, проверьте изображение, здесь метки больше текста (выровнены по центру)

введите здесь описание изображения

Спасибо.

  • Вам придется использовать NSAttributedString. Mike Weller 06.05.2013
  • @MikeWeller Можете ли вы дать более подробную информацию ... Newbee 06.05.2013
  • Я думаю, вы хотите, чтобы фон был четким. установить label.backgroundColor = [UIColor clearColor]; Label.highlightedTextColor = [UIColor greenColor]; Ashini 06.05.2013
  • вы добавляете метку в .xib или программно? MadhuP 06.05.2013
  • @ pm444 только xib, но я могу управлять программно. Newbee 06.05.2013
  • Итак, вы хотите, чтобы серый цвет был цветом фона вашего текста, а не цветом фона метки, я прав? MadhuP 06.05.2013

iosiphonecocoa-touchuilabelxib

Ответы

Ответ 1 · рейтинг 22 · Mike Weller

Большинство других решений не учитывают текст, занимающий несколько строк, но выделяют только текст, и все они довольно хакерские, включая дополнительные подпредставления.

Решение для iOS 6 и более поздних версий заключается в использовании строк с атрибутами:

NSMutableAttributedString *s =
     [[NSMutableAttributedString alloc] initWithString:yourString];

[s addAttribute:NSBackgroundColorAttributeName
          value:[UIColor greenColor]
          range:NSMakeRange(0, s.length)];

label.attributedText = s;

Ответ 2 · рейтинг 3 · xapslock

Это добавит подтекст за текстом с правильным размером:

CGSize size= [[label text] sizeWithFont:[UIFont systemFontOfSize:18.0]];
NSLog(@"%.1f | %.1f", size.width, size.height);
NSLog(@"%.1f | %.1f", label.frame.size.width, label.frame.size.height);

UIView *highlightView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)];
[highlightView setBackgroundColor:[UIColor greenColor]];
[self.view insertSubview:highlightView belowSubview:label];
[highlightView setCenter:label.center];

И не забудь: [label setBackgroundColor:[UIColor clearColor]];

Ответ 3 · рейтинг 1 · SAMIR RATHOD

попробуй это

MTLabel

    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];

Ответ 4 · рейтинг -3 · gagan sharma

У вас может быть UIImageView, установить для него цвет фона по вашему выбору, а затем поместить на него UIlabel. Это наверняка решит вашу проблему. Вот код обходного пути:

 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];

Вы также можете добиться того же, используя Interface Builder.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы