Highlight just the text in a UILabel

后端 未结 3 568
你的背包
你的背包 2020-12-03 04:03

I\'m attempting to set the background color/highlight just the text within a UILabel. The issue is that the line breaks and spaces added to the UILabel

3条回答
  •  遥遥无期
    2020-12-03 04:29

    I've faced same issue and found out easier solution without huge performance costs. You can simply add TTTAttributedLabel to your project.

    My demo project for the question:

    #import "TTTAttributedLabel.h"
    
    @implementation ViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        UILabel *label1 = [UILabel new];
        label1.textAlignment = NSTextAlignmentCenter;
        label1.numberOfLines = 0;
        label1.frame = CGRectMake(20, 0, CGRectGetWidth(self.view.frame) - 40, CGRectGetHeight(self.view.frame) / 2.0);
        [self.view addSubview:label1];
    
        TTTAttributedLabel *label2 = [TTTAttributedLabel new];
        label2.textAlignment = NSTextAlignmentCenter;
        label2.numberOfLines = 0;
        label2.frame = CGRectMake(20, CGRectGetHeight(self.view.frame) / 2.0, CGRectGetWidth(self.view.frame) - 40, CGRectGetHeight(self.view.frame) / 2.0);
        [self.view addSubview:label2];
    
        NSDictionary *attributes = @{NSBackgroundColorAttributeName:[UIColor blackColor], NSForegroundColorAttributeName:[UIColor whiteColor], NSFontAttributeName:[UIFont systemFontOfSize:32 weight:UIFontWeightBold]};
        NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"Some very long string which can contain newlines and some other stuff" attributes:attributes];
        label1.attributedText = string;
        label2.text = string;
    }
    
    @end
    

提交回复
热议问题