How to highlight only text in UILabel - IOS

后端 未结 4 1633
轻奢々
轻奢々 2020-12-14 22:57

I just want to highlight only text in UILabel, I have tried by giving backgroundColor for label, but it is highlighting the empty spaces also looks

相关标签:
4条回答
  • 2020-12-14 23:36

    You can have a UIImageView, set its background color of your choice then place your UIlabel on it. That will surely solve your problem. Here is Workaround code :

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

    You can also achieve the same using Interface Builder.

    0 讨论(0)
  • 2020-12-14 23:43

    This will add a subview behind the text, with the correct size:

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

    And don't forget: [label setBackgroundColor:[UIColor clearColor]];

    0 讨论(0)
  • 2020-12-14 23:44

    try this

    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];
    
    0 讨论(0)
  • 2020-12-14 23:47

    Most of the other solutions don't consider text that spans multiple lines while still only highlighting the text, and they are all pretty hacky involving extra subviews.

    An iOS 6 and later solution is to use attributed strings:

    NSMutableAttributedString *s =
         [[NSMutableAttributedString alloc] initWithString:yourString];
    
    [s addAttribute:NSBackgroundColorAttributeName
              value:[UIColor greenColor]
              range:NSMakeRange(0, s.length)];
    
    label.attributedText = s;
    
    0 讨论(0)
提交回复
热议问题