一般用富文本实现多种花样的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. 万能密码:‘or 1=1-- 实战SQL注入,秒破后台

    主要是没有对登录密码的字符串进行参数化和过滤,所以导致网站可以直接用"万能密码"进行突破登录 仅供学习交流 这是某同学做的网站,今天无聊打开了,并帮他进行测试一下 看到这个后台,感 ...

  2. VMware客户端vSphere Web Client新建虚拟机

    1.说明 vSphere Web Client是为管理员提供的一款通用的. 基于浏览器的VMware管理工具, 能够监控并管理VMware基础设施. 由于需要登录的宿主机安装的是ESXi-6.5.0, ...

  3. shell3-循环

    常用的循环语句有3种: <1>for <2>while <3>utile 1.for语句的格式: for 变量名 in 列表: do 循环体 done 如何生成列表 ...

  4. Backbone.js 0.9.2 源码分析收藏

    Backbone 为复杂Javascript应用程序提供模型(models).集合(collections).视图(views)的结构.其中模型用于绑定键值数据和自定义事件:集合附有可枚举函数的丰富A ...

  5. windows下过安全狗

    最近想着把过waf相关的整理一下,本次主要以安全狗4.0为例进行演示 准备工作 安全狗官网:http://free.safedog.cn/install_desc_website.html环境:Win ...

  6. 【C primer plus】初始化链表函数的错误

    C primer plus第六版 的一处错误 第五百页17.3.4 实现接口的程序清单17.5中的初始化链表函数有误 #源代码 void InitializeList(List * plist) { ...

  7. day 17 i++优先级大于 *i

    (1).有下列定义语句,int *p[4];以下选项中与此语句等价的是[C] (A).int p[4]; (B).int **P; (C).int *(p[4]); (D).int (*p)[4]; ...

  8. 【记录一个问题】opencv + cuda编译release版本后,链接出现奇怪的符号

    链接出现以下信息: 1 /home/admin/opencv/20190610_cuda_release/lib64/libopencv_core.a(ocl.cpp.o): In function ...

  9. android ndk下没有pthread_yield,好在std::this_thread::yield()可以达到同样的效果

    一个多线程的算法中,发现线程利用率只有47%左右,大量的处理时间因为usleep(500)而导致线程睡眠: 性能始终上不去. 把usleep(500)修改为std::this_thread::yiel ...

  10. 使用 fail2ban 保护 frp 服务

    背景 我们一般会使用 fail2ban 来保护暴露到公网的提供密码登录的 ssh 连接等. 但使用 frp 穿透后所有的从外网访问都会变成 127.0.0.1 进入的,原本能用 fail2ban 保护 ...