美文网首页
富文本 一个label 里面 显示中文和英文不同颜色

富文本 一个label 里面 显示中文和英文不同颜色

作者: 信徒阿门 | 来源:发表于2017-10-12 14:02 被阅读0次

    - (void)viewDidLoad {

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor yellowColor];

    //这个是你请求的 东西

    NSString *stringlabel = @"hello的期望Word的期望";

    UILabel *label  = [[UILabel alloc]initWithFrame:CGRectMake(10, 70, 300, 50)];

    label.backgroundColor = [UIColor redColor];

    [self.view addSubview:label];

    //把你请求下来的数据NSString转换为 NSMutableAttributedString 这个是可以变颜色的可变string

    NSMutableAttributedString * attStr = [[NSMutableAttributedString alloc]initWithString:stringlabel];

    //符合中文的正则表达式

    NSString *string =@"[\u4E00-\u9FA5]";

    NSError *error;

    //创建正则表达式

    NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:string options:0 error:&error];

    if (!error)

    {

    //遍历字符串,获得所有的匹配字符串

    NSArray * arr = [regex matchesInString:stringlabel options:0 range:NSMakeRange(0, stringlabel.length)];

    // 遍历匹配后的每一条记录

    for (NSTextCheckingResult *match in arr) {

    NSRange range = [match range];

    NSLog(@"----%d", range);

    //遍历 拿到符合要求的 range 然后根据 range 让他改变颜色

    //http://www.cnblogs.com/taintain1984/p/3550525.html 这个是网站  你看一下

    [attStr addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(range.location, range.length)];

    //这个东西对英文 改变比较大 对中文不大你可以试试

    [attStr addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Arial-ItalicMT" size:20.0] range:NSMakeRange(0, 5)];

    //然后把你的 应该用的label 的这个属性text 接受 这个可变的 String

    label.attributedText = attStr;

    }

    }

    }

    相关文章

      网友评论

          本文标题:富文本 一个label 里面 显示中文和英文不同颜色

          本文链接:https://www.haomeiwen.com/subject/jjanyxtx.html