Подтвердить что ты не робот

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

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

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

enter image description here

Thanx.

4b9b3361

Ответ 1

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

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

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

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

label.attributedText = s;

Ответ 2

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

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

попробуйте это

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

У вас может быть 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.