富文本设置文字颜色和字体

富文本设置文字颜色和字体,第1张

在iOS开发中,常常会有一段文字显示不同的颜色和字体,或者给某几个文字加删除线或下划线的需求。之前在网上找了一些资料,有的是重绘UILabel的textLayer,有的是用html5实现的,都比较麻烦,而且很多UILabel的属性也不起作用了,效果都不理想。后来了解到NSMuttableAttstring(带属性的字符串),上面的一些需求都可以很简便的实现。

-(id)initWithString:(NSString *)str attributes:(NSDictionary *)attrs

字典中存放一些属性名和属性值,如:

NSDictionary *attributeDict = [NSDictionarydictionaryWithObjectsAndKeys:

[UIFontsystemFontOfSize:15.0],NSFontAttributeName,

[UIColorredColor],NSForegroundColorAttributeName,

NSUnderlineStyleAttributeName,NSUnderlineStyleSingle,nil]

NSMutableAttributedString *AttributedStr = [[NSMutableAttributedStringalloc]initWithString:@"今天天气不错呀" attributes:attributeDict]

-(id)initWithAttributedString:(NSAttributedString *)attester

使用NSAttributedString初始化,跟NSMutableString,NSString类似

使用方法:

为某一范围内文字设置多个属性

-(void)setAttributes:(NSDictionary *)attrs range:(NSRange)range

为某一范围内文字添加某个属性

-(void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range

为某一范围内文字添加多个属性

-(void)addAttributes:(NSDictionary *)attrs range:(NSRange)range

移除某范围内的某个属性

-(void)removeAttribute:(NSString *)name range:(NSRange)range

运行效果:

另外,其他可以设置text 的控件(如UIButton,UITextField)也都有该属性,该文章不够详细,只是简单介绍,其他效果的实现参考API中更多的属性及使用方法。

在iOS上能进行文本显示的控件有UILable,UITextField,UITextView。然而这些控件本身对文本的展现方式很单一,通常仅仅能够控制字体样式、大小、颜色、加粗、斜体等等,而对于行距控制,字距控制,段落控制等高级功能却无能为力。

而iOS7的发布,苹果又引入了TextKit,TextKit是一个快速而又现代化的文字排版和渲染引擎。

TextKit并没有新增类,只是在原有的文本显示控件上进行了封装,可以在平时我们最喜欢使用的UILabel,UITextField,UITextView等控件里面使用,其最主要的作用就是为程序提供文字排版和渲染的功能

富文本注意:

先设置的先显示,后设置的,如果和先设置的样式不一致,是会覆盖的,富文本的设置具有先后顺序。

不要忽略了空格也是一个字符。

建议使用灵活的好用的NSMutableAttributedString,不要使用NSAttributedString。

富文本基本使用方法的思路概要

1、创建一个NSMutableAttributedString富文本对象(一般不用NSAttributedString)

2、设置addAttribute属性

(1) addAttribute: 一个属性

(2) addAttributes: 一个存储多个属性的属性字典,比如这个字典可以是:

NSDictionary *attrDic = @{

NSFontAttributeName: [UIFont fontWithName: @"Zapfino" size: 15],

NSForegroundColorAttributeName: [UIColor blueColor]

}

3、控件.attributedText = 富文本对象(和控件.txt = NSString文本对象不一样的)

制作富文本,你可能会有一些定制的需求,比如图片的高度不想每个都要设置一边,你可以写一个继承,然后将下面方法重写

替换文本内容里面的字符为图片

文章借鉴:https://blog.csdn.net/weixin_44446659/article/details/108142808

官方文档:http://tinymce.ax-z.cn/more-plugins/lineheight.php

前言:项目中有这个需求,然后找到了另外的方法,记录一下

Tinymce 版本5可实现对lineheight的设置

在toolbar中添加属性 styleselect

在初始化init方法中添加:

style_formats: [

    {

            title: "Line Height",

            items: [

              { title: "1", block: "p", styles: { "line-height": "1.0" } },

              { title: "1.5", block: "p", styles: { "line-height": "1.5" } },

              { title: "1.75", block: "p", styles: { "line-height": "1.75" } },

              { title: "2", block: "p", styles: { "line-height": "2" } },

              { title: "3", block: "p", styles: { "line-height": "3" } },

              { title: "4", block: "p", styles: { "line-height": "4" } },

              { title: "5", block: "p", styles: { "line-height": "5" } }

            ]

          }

        ],

        style_formats_merge: true, //设置行高

        style_formats_autohide: true //设置行高

如图:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6045010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-12
下一篇 2023-03-12

发表评论

登录后才能评论

评论列表(0条)

保存