我只想强调UILabel
中的文字,我试过给backgroundColor
标签,但是突出显示空格也看起来不太好。那么有没有办法突出显示文本而不调整UILabel
。
请检查图像,此处标签大于文字(居中对齐)
感谢名单。
答案 0 :(得分:22)
大多数其他解决方案不考虑跨越多行的文本,同时仍然只突出显示文本,并且它们都非常hacky涉及额外的子视图。
iOS 6及更高版本的解决方案是使用属性字符串:
NSMutableAttributedString *s =
[[NSMutableAttributedString alloc] initWithString:yourString];
[s addAttribute:NSBackgroundColorAttributeName
value:[UIColor greenColor]
range:NSMakeRange(0, s.length)];
label.attributedText = s;
答案 1 :(得分: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]];
答案 2 :(得分:1)
试试这个
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];
答案 3 :(得分:-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。
实现相同目的