11

我只想突出显示中的文本UILabel,我尝试通过给出backgroundColor标签,但它突出显示空白也看起来不好。那么有没有办法在不调整大小的情况下突出显示文本UILabel

请检查图片,这里的标签比文字大(居中对齐)

在此处输入图像描述

谢谢。

4

4 回答 4

22

大多数其他解决方案不考虑跨越多行的文本,同时仍然只突出显示文本,而且它们都非常hacky,涉及额外的子视图。

iOS 6 及更高版本的解决方案是使用属性字符串:

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

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

label.attributedText = s;
于 2013-05-06T10:39:17.787 回答
3

这将在文本后面添加一个子视图,大小正确:

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

于 2013-05-06T10:13:57.137 回答
1

尝试这个

MTL标签

    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];
于 2013-05-06T09:42:43.867 回答
-3

您可以拥有一个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 实现相同的目的。

于 2013-05-06T09:53:08.743 回答