Как выделить только текст в UILabel - IOS
Я просто хочу выделить только текст в UILabel
, я попробовал, указав backgroundColor
для метки, но выделяет пустые пространства, также выглядит не очень хорошо. Итак, есть ли способ выделить текст без изменения размера UILabel
.
Пожалуйста, проверьте изображение, здесь метки больше, чем текст (выровненный по центру)
![enter image description here]()
Thanx.
Ответы
Ответ 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.