动态改变富文本字体的颜色

更新时间:2023-05-11 16:21:02 阅读: 评论:0

动态改变富⽂本字体的颜⾊
在使⽤富⽂本时(NSMutableAttributedString),看到都是固定的⼀堆字符串,然后去改变其中某⼏个字符的颜⾊、⼤⼩等等,这些
都还⽐较简单,但是很⼤情况下我们获得的数据并不是固定的,如果这时我们想让字体的颜⾊和⼤⼩随着后台返回数据的变化⽽变化,我们
应该怎么做呢?思路⼀样很简单,就是获得我们想要改变的字符,然后去赋值颜⾊和⼤⼩即可,不过由于字符是动态的,在获取该字符的
range时再采⽤传统的  NSRangeFromString()的⽅法已经获取不到该range,所以导致部分童靴明明设置了颜⾊和⼤⼩却并没有什么卵⽤
⽽急得抓⽿挠腮,那么解决办法来了,其实很简单,只需要这样做:
//获得想要改变字体颜⾊的range  在这⾥ model.rule_action_desc是从后台获取到的数据,由于“获得”字体和它相同,所以就拼到了⼀块
NSRange range1 = [integralString rangeOfString:[NSString stringWithFormat:@"%@获得",model.rule_action_desc] options:NSBackwardsSearch];
这样就获得了该range,看效果图:
再贴上我的富⽂本的代码:
//从后台获取的字符串,加上定制的“获得”
NSString *integralString = [NSString stringWithFormat:@"%@获得%@",model.rule_action_desc,model.rule_score];
//创建富⽂本
NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:integralS
tring];
//设置字体⼤⼩
[attributedStr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:13.0] range:NSMakeRange(0, attributedStr.string.length)];
//分别获得想要改变字体颜⾊的range
NSRange range1 = [integralString rangeOfString:[NSString stringWithFormat:@"%@获得",model.rule_action_desc] options:NSBackwardsSearch];
NSRange range2 = [integralString rangeOfString:[NSString stringWithFormat:@"%@",model.rule_score] options:NSBackwardsSearch];
//改变字体颜⾊
[attributedStr addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0x333333) range:range1];
[attributedStr addAttribute:NSForegroundColorAttributeName value:UIColorFromRGB(0xff4c79) range:range2];
UILabel *integralScoreLabel = [[UILabel alloc] initWithFrame:CGRectMake(igin.x + timeLabel.frame.size.width + 30, igin    //设置label的attributedText
integralScoreLabel.attributedText = attributedStr;

本文发布于:2023-05-11 16:21:02,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/104710.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:改变   获得   获取   字体   想要   后台   数据
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图