文档章节

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

hungryBoy
 hungryBoy
发布于 2016/03/01 12:55
字数 467
阅读 563
收藏 2

      在使用富文本时(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:integralString];
    //设置字体大小
    [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(timeLabel.frame.origin.x + timeLabel.frame.size.width + 30, timeLabel.frame.origin.y, 120, timeLabel.frame.size.height)];
    //设置label的attributedText
    integralScoreLabel.attributedText = attributedStr;


© 著作权归作者所有

共有 人打赏支持
上一篇: WKWebView添加cookie
下一篇: iOS开发笔记
hungryBoy

hungryBoy

粉丝 1
博文 41
码字总数 14345
作品 0
朝阳
程序员
私信 提问
使用Span实现各种酷炫效果

前一段时间一直在做富文本展示和文本处理,主要用到了Html.fromHtml()实现加载网页,但实现整段文本的某些特殊如个别文字的点击,改背景色、前景色等效果,就用到了我们今天要用到的Span这个...

安卓干货营
2017/12/07
0
0
windows下的富文本框--PMEdit

一、在开始之前首先吐槽一下,本人是一个独立开发者,在中国独立开发者就代表一个比较苦逼的行业,特别是对底层东西进行开发者,尤其本人研究方向是编译器、解析器基本上没有公司要,所以出来...

feirench
2013/04/05
6.1K
2
1.修改文字的样式

1.修改文字的样式 步骤如下: NSMutableAttributedString 创建一个富文本对象 调用富文本的对象方法 addAttribute:(NSString )value:(id) range:(NSRange) 来修改对应range范围中 attribute属...

Gong_xiao
2016/03/07
18
0
Text Kit学习(入门和进阶)

转自TracyYih的博客 更详细的内容可以参考官方文档 《Text Programming Guide for iOS》。 “Text Kit指的是UIKit框架中用于提供高质量排版服务的一些类和协议,它让程序能够存储,排版和显示...

hejunbinlan
2015/08/14
0
0
富文本初探

NSMutableAttributedString *str2 = [[NSMutableAttributedString alloc] initWithString:@"abcdfuinABCDjalkdafjf;"]; [str2 beginEditing]; [str2 addAttribute:NSFontAttributeName value......

娜一片蓝色星海
2016/03/09
45
0

没有更多内容

加载失败,请刷新页面

加载更多

Kafka+Flink 实现准实时异常检测系统

1.背景介绍 异常检测可以定义为“基于行动者(人或机器)的行为是否正常作出决策”,这项技术可以应用于非常多的行业中,比如金融场景中做交易检测、贷款检测;工业场景中做生产线预警;安防...

架构师springboot
9分钟前
0
0
DecimalFormat 类基本使用

/* * DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度 * 0 表示如果位数不足则以 0 填充 * # 表示只要有可能就把数字拉上这个位置 * */ public static void main(String[] args){...

嘴角轻扬30
26分钟前
1
0
This APT has Super Cow Powers.

在Debian/Ubuntu上,apt包管理器内嵌着一个彩蛋. 如果你在命令行界面输入 apt help 在最后一行能找到This APT has Super Cow Powers. 说明该apt具有超级牛力 牛力是个什么梗? 则说明你的系统...

taadis
43分钟前
1
0
起薪2万的爬虫工程师,Python需要学到什么程度才可以就业?

爬虫工程师的的薪资为20K起,当然,因为大数据,薪资也将一路上扬。那么,Python需要学到什么程度呢?今天我们来看看3位前辈的回答。 1、前段时间快要毕业,而我又不想找自己的老本行Java开发...

糖宝lsh
52分钟前
6
0
携手开发者共建云生态 首届腾讯云+社区开发者大会在京举办

本文由云+社区发表 北京时间12月15日,由腾讯云主办,极客邦科技、微信、腾讯TEG协办的首届腾讯云+社区开发者大会在北京朝阳悠唐皇冠假日酒店举办。在会上,腾讯云发布了重磅产品开发者平台以...

腾讯云加社区
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部