文档章节

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

hungryBoy
 hungryBoy
发布于 2016/03/01 12:55
字数 467
阅读 552
收藏 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;


© 著作权归作者所有

共有 人打赏支持
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
富文本初探

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

娜一片蓝色星海
2016/03/09
45
0
iOS 轻量级富文本框架 - ZJAttributedText

ZJAttributedText 是高性能轻量级富文本框架 前言 如果遇到上面一个需求, 你会怎么处理, 若干个 UILabel + UIImageView? NSAttributedString拼接? CoreText? 我相信不论是哪种方式代码量都不...

Syik
06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

计算卷积神经网络浮点数运算量

前言 本文主要是介绍了,给定一个卷积神经网络的配置之后,如何大概估算它的浮点数运算量。 相关代码:CalFlops,基于MXNet框架的 Scala 接口实现的一个计算MXNet网络模型运算量的demo。 正文...

Ldpe2G
今天
1
0
Sql语言与MySql数据库

1. 数据库简介 1. 数据库,就是存储数据的仓库,只能通过sql语言来访问,数据库也是一个文件系统。通常,MySQL、Oracle等数据库,也被称为关系型数据库,其保存的不仅仅只是数据,还包括数据...

江左煤郎
今天
1
0
IDEA 取消自动import .*

打开设置 > Editor > Code Style > Java > Scheme Default > Imports ① 将 Class count to use import with "*" 改为 99 (导入同一个包的类超过这个数值自动变为 * ) ② 将 Names count ......

乔老哥
今天
3
0
PostGIS学习笔记(开篇)

PostGIS事实上算是笔者开始写博客的第一篇内容。而事实上那篇博文的内容并不丰富,笔者对PostGIS的了解仍然不多,然而17年在OSGeo课程学习时对PostGIS又有了进一步了解,并逐步发现它的强大。...

胖胖雕
今天
3
0
【Centos】在nginx服务器中配置php和mysql

接上一章《【Centos】利用Vultr服务器和namesilo布网》(https://my.oschina.net/u/3776619/blog/2051986),在Centos中配置好nginx,并在iptables中开启了80端口,和为了远程mysql操作方便开...

yongh701
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部