一般用富文本实现多种花样的Label文字,下图是利用UILabel分类快速创建的多彩多样lable文字,快速简单,自定义性强,更重要的是无代码污染,特别适合轻量级使用

https://github.com/joaoffcosta/UILabel-FormattedText

在我写这篇博客的第二天,作者就把代码全部改成swift了....

主要功能介绍:

在同一lablel中设置不同文字字体,文字颜色,下划线,删除线,字间距,斜体,图片

在类别中新加几个个方法,这样更加强大,方便使用,其它方法调用详见Demo

//  UILabel+FormattedText.h

#pragma mark--自定义添加
/*设置字体于颜色*/
- (void) setFont:(UIFont *)font substring:(NSString*)substring;
- (void) setFont:(UIFont *)font WithtColor:(UIColor *)textColor substring:(NSString*)substring; /**添加删除线 */
-(void)setTextDeleteLine:(UIColor *)lineColor range:(NSRange)range; /**斜体*/
-(void)setObliqueness:(id)obliqueness range:(NSRange)range; /** 字间距 */
-(void)setWordSpace:(id)space range:(NSRange)range; /** 添加多个属性*/
-(void)setTextAttributes:(NSDictionary *)attributes range:(NSRange)range; /*添加图片*/
-(void)addImgAttachment:(UIImage *)image size:(CGSize)size range:(NSRange)range;

  

  

//  UILabel+FormattedText.m

#pragma mark -Custom Add By Copyright (c) SIBU.Net----
- (void) setFont:(UIFont*)font substring:(NSString*)substring {
NSRange range = [self.text rangeOfString:substring];
if (range.location != NSNotFound)
{
[self setFont:font range:range];
}
} - (void) setFont:(UIFont *)font WithtColor:(UIColor *)textColor substring:(NSString*)substring
{
NSRange range = [self.text rangeOfString:substring];
if (range.location != NSNotFound)
{
[self setFont:font range:range];
[self setTextColor:textColor range:range];
}
} /**添加删除线 */
-(void)setTextDeleteLine:(UIColor *)lineColor range:(NSRange)range
{
NSMutableAttributedString *text = [self.attributedText mutableCopy];
[text addAttribute:NSStrikethroughStyleAttributeName
value:@(YES)
range:range]; [text addAttribute:NSUnderlineColorAttributeName value:lineColor range:range];
self.attributedText = text;
} /**
* 斜体,设置字体倾斜度--@0.0~@1.0
*/
-(void)setObliqueness:(id)obliqueness range:(NSRange)range{
NSMutableAttributedString *text = [self.attributedText mutableCopy];
[text addAttribute:NSObliquenessAttributeName value:obliqueness range:range];
self.attributedText = text;
} /** 字间距 */
-(void)setWordSpace:(id)space range:(NSRange)range;
{
NSMutableAttributedString *text = [self.attributedText mutableCopy];
[text addAttribute:NSKernAttributeName value:space range:range];
self.attributedText = text;
}

/** 设置多个属性*/
-(void)setTextAttributes:(NSDictionary *)attributes range:(NSRange)range
{
NSMutableAttributedString *text = [self.attributedText mutableCopy];
[text addAttributes:attributes range:range];
self.attributedText = text;
} /*添加图片*/
-(void)addImgAttachment:(UIImage *)image size:(CGSize)size range:(NSRange)range
{
NSMutableAttributedString *text = [self.attributedText mutableCopy];
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = [self imageWithImage:image scaleToSize:size]; NSAttributedString *iconAttributedString = [NSAttributedString attributedStringWithAttachment:textAttachment];
[text replaceCharactersInRange:range withAttributedString:iconAttributedString];
self.attributedText = text;
}

使用

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor=[UIColor blackColor]; NSString *text=@"思埠集团于2015年1月6日正式入股本土第一家在新三板上市日化企业——幸美股份(代码830929),成为幸美最大股东。广东思埠集团直接控股新三板挂牌上市公司幸美股份,正式成为准上市公司。"; UILabel *labelA = [[UILabel alloc] init];
[labelA setFrame:CGRectMake(0, 15, self.view.frame.size.width,25)];
[labelA setBackgroundColor:[UIColor clearColor]];
[labelA setTextAlignment:NSTextAlignmentCenter];
[labelA setText:@"Color Label"];
[labelA setTextColor:[UIColor cyanColor]];
[labelA setFont:[UIFont systemFontOfSize:22]];;
[labelA setTextColor:[UIColor redColor] String:@"Color"];
[self.view addSubview:labelA]; // Colors
UILabel *labelC = [[UILabel alloc] init];
[labelC setFrame:CGRectMake(0, 30, self.view.frame.size.width, floorf(self.view.frame.size.height / 5))];
[labelC setBackgroundColor:[UIColor clearColor]];
[labelC setTextAlignment:NSTextAlignmentCenter];
[labelC setText:text];
[labelC setNumberOfLines:2];
[labelC setTextColor:[UIColor yellowColor]];
[labelC setFont:[UIFont fontWithName:@"Courier" size:14]];
[labelC setTextColor:[UIColor whiteColor] range:NSMakeRange(20, 3)];
[labelC setTextColor:[UIColor cyanColor] range:NSMakeRange(28, 4)];
[labelC setTextUnderLine:[UIColor redColor] range:NSMakeRange(10, 6)];
[self.view addSubview:labelC]; // Fonts
UILabel *labelF = [[UILabel alloc] init];
[labelF setFrame:CGRectMake(0, floorf(self.view.frame.size.height / 4), self.view.frame.size.width, floorf(self.view.frame.size.height / 3))];
[labelF setBackgroundColor:[UIColor clearColor]];
[labelF setTextAlignment:NSTextAlignmentCenter];
[labelF setText:text];
[labelF setNumberOfLines:2];
[labelF setTextColor:[UIColor yellowColor]];
[labelF setFont:[UIFont fontWithName:@"Courier" size:14]];
[labelF setTextColor:[UIColor redColor] String:@"幸美股份"];
[labelF setFont:[UIFont systemFontOfSize:20] WithtColor:[UIColor whiteColor] substring:@"思埠集团"];
[self.view addSubview:labelF]; // Colors AND Fonts
UILabel *labelCF = [[UILabel alloc] init];
[labelCF setFrame:CGRectMake(0, floorf(self.view.frame.size.height * 2 / 4), self.view.frame.size.width, floorf(self.view.frame.size.height / 3))];
[labelCF setBackgroundColor:[UIColor clearColor]];
[labelCF setTextAlignment:NSTextAlignmentCenter];
[labelCF setText:text];
[labelCF setNumberOfLines:2];
[labelCF setTextColor:[UIColor yellowColor]];
[labelCF setFont:[UIFont fontWithName:@"Courier" size:14]];
[labelCF setTextColor:[UIColor redColor] range:NSMakeRange(20, 8)];
[labelCF setFont:[UIFont fontWithName:@"Courier-Bold" size:14] range:NSMakeRange(20, 8)];
[labelCF setTextColor:[UIColor cyanColor] range:NSMakeRange(33, 11)];
[labelCF setFont:[UIFont fontWithName:@"Courier-Oblique" size:14] range:NSMakeRange(33, 11)];
[self.view addSubview:labelCF]; }

Demo:https://files.cnblogs.com/files/sixindev/UILabelFormattedText.zip

附录:

//常见的属性及说明
NSFontAttributeName 设置字体属性,默认值:字体:Helvetica(Neue) 字号:12
NSForegroundColorAttributeNam 设置字体颜色,取值为 UIColor对象,默认值为黑色
NSBackgroundColorAttributeName 设置字体所在区域背景颜色,取值为 UIColor对象,默认值为nil, 透明色
NSLigatureAttributeName 设置连体属性,取值为NSNumber 对象(整数),0 表示没有连体字符,1 表示使用默认的连体字符
NSKernAttributeName 设定字符间距,取值为 NSNumber 对象(整数),正值间距加宽,负值间距变窄
NSStrikethroughStyleAttributeName 设置删除线,取值为 NSNumber 对象(整数)
NSStrikethroughColorAttributeName 设置删除线颜色,取值为 UIColor 对象,默认值为黑色
NSUnderlineStyleAttributeName 设置下划线,取值为 NSNumber 对象(整数),枚举常量 NSUnderlineStyle中的值,与删除线类似
NSUnderlineColorAttributeName 设置下划线颜色,取值为 UIColor 对象,默认值为黑色
NSStrokeWidthAttributeName 设置笔画宽度,取值为 NSNumber 对象(整数),负值填充效果,正值中空效果
NSStrokeColorAttributeName 填充部分颜色,不是字体颜色,取值为 UIColor 对象
NSShadowAttributeName 设置阴影属性,取值为 NSShadow 对象
NSTextEffectAttributeName 设置文本特殊效果,取值为 NSString 对象,目前只有图版印刷效果可用:
NSBaselineOffsetAttributeName 设置基线偏移值,取值为 NSNumber (float),正值上偏,负值下偏
NSObliquenessAttributeName 设置字形倾斜度,取值为 NSNumber (float),正值右倾,负值左倾
NSExpansionAttributeName 设置文本横向拉伸属性,取值为 NSNumber (float),正值横向拉伸文本,负值横向压缩文本
NSWritingDirectionAttributeName 设置文字书写方向,从左向右书写或者从右向左书写
NSVerticalGlyphFormAttributeName 设置文字排版方向,取值为 NSNumber 对象(整数),0 表示横排文本,1 表示竖排文本
NSLinkAttributeName 设置链接属性,点击后调用浏览器打开指定URL地址
NSAttachmentAttributeName 设置文本附件,取值为NSTextAttachment对象,常用于文字图片混排
NSParagraphStyleAttributeName 设置文本段落排版格式,取值为 NSParagraphStyle 对象

  

扩展阅读

ios知识点总结——富文本实现图文混排

FastTextView--iOS上最好的开源富文本编辑器。

TYAttributedLabel

图文混排NSTextAttachment

http://itfish.net/article/37083.html

http://joeytat.com/post/ios/7.-shi-yong-%60nsattributedstring%60-shi-xian-tu-wen-hun-pai

AttributeText创建多彩文字Label --- hl的更多相关文章

  1. 点击文字label同时选中checkbox radio

    在做网页的时候一般会有一个需求:点击一段文字信息的同时选中某个checkbox 旧处理方式是在这段文字上加上点击事件触发checkbox的选中事件 //jq中://选中 $("#ID&quo ...

  2. Android TextView设置多彩文字

    在应用开发中时常会遇到需要在一段文字中插入几个不一样颜色文字的需求; 以前本人都是用多个TextView拼起来,不仅感觉很蠢,操作起来也蛮恶心; 直到接触到了SpannableStringBuilde ...

  3. google地图marker文字label添加js lib

    google的地图marker需要使用js开发库,文件并允许使用js库 在JSP页面中需要添加地图引用如: <script src="http://maps.googleapis.co ...

  4. Cocos2D创建多彩文本显示标签

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) Cocos2D中默认的CCLableTTF类从源代码里看是支持 ...

  5. ObjectARX创建带文字的线型实例代码

    AcDbLinetypeTable* pLinetypeTable=NULL; Acad::ErrorStatus es = acdbHostApplicationServices()->wor ...

  6. NSAttributeString创建各种文字效果

    NSDictionary *attributes =@{ NSForegroundColorAttributeName: [UIColorredColor], NSFontAttributeName: ...

  7. 【Cocos2d-x for WP8 学习整理】(5)文字显示全整理

    学习 Cocos2d-x 有一阵了,现在要做个小东西,第一步就遇到了文字展示的问题,于是想把可能遇到的问题统统整理一下.这一部分也不局限于wp8,全平台应该都是一个解决方案. 先在脑袋里大致想了一下, ...

  8. iOS开发小技巧--即时通讯项目:使用富文本在UILabel中显示图片和文字;使用富文本占位显示图片

    Label借助富文本显示图片 1.即时通讯项目中语音消息UI的实现,样式如图: 借助富文本在UILabel中显示图片和文字 // 1.创建一个可变的富文本 NSMutableAttributedStr ...

  9. iOS开发——项目篇—高仿百思不得姐 05——发布界面、发表文字界面、重识 bounds、frame、scrollView

    加号界面(发布模块) 一.点击加号modal出发布模块,创建控件,布局控件1)使用xib加载view,如果在viewDidLoad创建控件并设置frame 那么self.view 的宽高 拿到的是xi ...

随机推荐

  1. Swoole 中使用 HTTP 异步服务器、HTTP 协程服务器

    HTTP 异步风格服务器 # http_server.php $http = new Swoole\Http\Server("0.0.0.0", 9501); // 设置服务器运行 ...

  2. 论文翻译:2021_Semi-Blind Source Separation for Nonlinear Acoustic Echo Cancellation

    论文地址:https://ieeexplore.ieee.org/abstract/document/9357975/ 基于半盲源分离的非线性回声消除 摘要: 当使用非线性自适应滤波器时,数值模型与实 ...

  3. Linux上天之路(十)之Linux磁盘管理

    主要内容 磁盘介绍 磁盘管理 磁盘限额 逻辑卷管理 磁盘阵列 1. 磁盘介绍 硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等.每个盘片有两面,都可记录信息.盘片 ...

  4. Leetcode算法系列(链表)之删除链表倒数第N个节点

    Leetcode算法系列(链表)之删除链表倒数第N个节点 难度:中等给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点.示例:给定一个链表: 1->2->3->4-&g ...

  5. win10中查看开关机时间及查看admin的RID的方法

    原文链接: https://www.toutiao.com/i6772133439593251339/ 打开系统的注册表 键盘输入win+r组合键出现运行窗口命令 输入regedit 按回车键,进入注 ...

  6. Git 基础指令

    Git 基础指令 Git 基础指令 获取 Git 仓库 在已存在目录中初始化仓库 克隆现有的仓库 记录仓库与仓库的更新 仓库的记录 检查当前文件状态 三部曲 跟踪新文件 提交更新 移除文件 推送到远程 ...

  7. Underscore.js 1.3.3 源码分析收藏

    Underscore是一个提供许多函数编程功能的库,里面包含了你期待(在Prototype.js和Ruby中)的许多功能.但是没有扩展任何内置的Javascript对象,也就是说它没有扩展任何内置对象 ...

  8. 网络协议学习笔记(八)DNS协议和HttpDNS协议

    概述 上一篇主要讲解了流媒体协议和p2p协议,现在我给大家讲解一下关于DNS和HttpDNS的相关知识. DNS协议:网络世界的地址簿 在网络世界,也是这样的.你肯定记得住网站的名称,但是很难记住网站 ...

  9. 基于Appium的APP自动化测试基础--美团APP的实例

    转:https://blog.csdn.net/Tigerdong1/article/details/80159156 前段时间用一种流行语言,一个主流工具,一个实用框架,写了一个美团app自动化测试 ...

  10. 【小测试】使用腾讯云上的群集版redis

    具体的文档请见:https://cloud.tencent.com/document/product/239/3205 群集版本相当于很多个redis进程构成一个群集,最大支持128个分片(猜测分片就 ...