使用富文本OHAttributedLabel
OHAttributedLabel 富文本标签
https://github.com/AliSoftware/OHAttributedLabel
以下是我渲染出来的效果
OHAttributedLabel
This class allows you to use a UILabel with NSAttributedStrings, in order to display styled text with various style (mixed fonts, color, size, ...) in a unique label. It is a subclass of UILabel which adds an attributedText property. Use this property, instead of thetext property, to set and get the NSAttributedString to display.
这个类允许你让UILabel使用富文本,显示出极具动感而独特的文本标签.它继承至UILabel并添加了一个attributedText属性.
Note: This class is compatible with iOS4.3+ and has been developped before the release of the iOS6 SDK (before Apple added support for NSAttributedLabel in the UILabel class itself). It can still be used with the iOS6 SDK (theattributedText property hopefully match the one chosen by Apple) if you need support for eariler iOS versions or for the additional features it provides.
注意:这个类兼容iOS4.3+,在iOS6 SDK出来之前就已经出现了(iOS6 SDK出来后使得UILabel支持了NSAttributedLabel).如果你想兼容早期版本,你还是可以使用这个类.
This class also support hyperlinks and URLs. It can automatically detect links in your text, color them and make them touchable; you can also add "custom links" in your text by attaching an URL to a range of your text and thus make it touchable, and even then catch the event of a touch on a link to act as you wish to.
这个类支持高亮链接地址,他可以自动检测你的文本中的链接地址,并使得他们可以触发触摸事件.你也可以给你的文本添加触摸事件.
NSAttributedString and NSTextChecking additions
In addition to this OHAttributedLabel class, you will also find a category of NS(Mutable)AttributedString to ease creation and manipulation of common attributes of NSAttributedString (to easily change the font, style, color, ... of a range of the string). See the header file NSAttributedString+Attributes.h for a list of those comodity methods.
除了OHAttributedLabel这个类,你还会发现有NS(Mutable)AttributedString的category,让你更加便利的创建富文本的相关属性.
Example:
// Build an NSAttributedString easily from a NSString NSMutableAttributedString* attrStr = [NSMutableAttributedString attributedStringWithString:txt]; // Change font, text color, paragraph style [attrStr setFont:[UIFont fontWithName:@"Helvetica" size:18]]; [attrStr setTextColor:[UIColor grayColor]]; OHParagraphStyle* paragraphStyle = [OHParagraphStyle defaultParagraphStyle]; paragraphStyle.textAlignment = kCTJustifiedTextAlignment; paragraphStyle.lineBreakMode = kCTLineBreakByWordWrapping; paragraphStyle.firstLineHeadIndent = 30.f; // indentation for first line paragraphStyle.lineSpacing = 3.f; // increase space between lines by 3 points [attrStr setParagraphStyle:paragraphStyle]; // Change the color and bold of only one part of the string [attrStr setTextColor:[UIColor redColor] range:NSMakeRange(10,3)]; [attrStr setTextBold:YES range:NSMakeRange(10,8)]; // Add a link to a given portion of the string [attrStr setLink:someNSURL range:NSMakeRange(8,20)];
There is also a category for NSTextCheckingResult that adds the extendedURL property. This property returns the same value as the URLvalue for standard link cases, and return a formatted Maps URL for NSTextCheckingTypeAddress link types, that will open Google Maps in iOS version before 6.0 and the Apples Maps application in iOS 6.0 and later.
NSTextCheckingResult这个类也有个category,我添加了extendedURL属性.这个属性返回与标准链接中的URL同样的值,并返回了一个格式化过的NSTextCheckingTypeAddress链接类型.
OHASMarkupParsers and simple markup to build your attributed strings easily
The library also comes with very simple tag parsers to help you build NSAttributedStrings easily using very simple tags.
这个库允许你使用tag注释的方式来帮助你快速的使用富文本.
the class OHASBasicHTMLParser can parse simple HTML tags like b and u to make bold and underlined text, change the font color using font color=… , etcthe class OHASBasicMarkupParser can parse simple markup like *bold text*, _underlined text_ and change the font color using markup like {red|some red text} or {#ff6600|Yeah}.
// Example 1: parse HTML in attributed string basicMarkupLabel.attributedText = [OHASBasicHTMLParser attributedStringByProcessingMarkupInAttributedString:basicMarkupLabel.attributedText]; // Example 2: parse basic markup in string NSAttributedString* as = [OHASBasicMarkupParser attributedStringByProcessingMarkupInString:@"Hello *you*!"]; // Example 3: //process markup in-place in a mutable attributed string NSMutableAttributedString* mas = [NSMutableAttributedString attributedStringWithString:@"Hello *you*!"]; [OHASBasicMarkupParser processMarkupInAttributedString:mas];
Note that OHASBasicHTMLParser is intended to be a very simple tool only to help you build attributed string easier: this is not intended to be a real and complete HTML interpreter, and will never be. For improvements of this feature, like adding other tags or markup languages, refer to issue #88)
注意,OHASBasicHTMLParser 只是一个帮助你简单创建富文本的工具,他可不是一个真正的HTML标签解析器.
The OHAttributedLabel class support the UIAppearance proxy API (available since iOS5). See selectors and properties marked using theUI_APPEARANCE_SELECTOR in the header.
This means that if you are targetting iOS5, you can customize all of your OHAttributedLabel links color and underline style to fit your application design, only in one call at the beginning of your application, instead of having to customize these for each instance.
For example, your could implement this in your application:didFinishLoadingWithOptions: delegate method to make all yourOHAttributedLabel instances in your whole app display links in green and without underline instead of the default underlined blue:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions [ [OHAttributedLabel appearance] setLinkColor:[UIColor colorWithRed:0.0 green:0.4 blue:0.0 alpha:1.0] ]; [ [OHAttributedLabel appearance] setLinkUnderlineStyle:kCTUnderlineStyleNone ]; return YES;
使用教程:
请在ARC下使用,不要ARC与MRC混用造成内存泄露!
源码地址 http://pan.baidu.com/s/1pJnY8BL
#import "OHAttributedLabel.h"
#import "OHParagraphStyle.h"
#import "OHTouchesGestureRecognizer.h"
// 注册字体 REGISTER_FONT(bundleFont(@"xinDiXiaoWanzi.ttf"), @"新蒂小丸子体"); REGISTER_FONT(bundleFont(@"huaKangShaoNv.ttf"), @"华康少女字体"); // 创建富文本string NSMutableAttributedString* attrStr = \ [NSMutableAttributedString attributedStringWithString:\ @"还记得吗,窗外那被月光染亮的海洋\ 你还记得吗,是爱让彼此把夜点亮\ 为何后来我们用沉默取代依赖 曾经朗朗星空,渐渐阴霾\ 心碎离开,转身回到最初荒凉里等待 为了寂寞,是否找个人填心中空白\ 我们变成了世上,最熟悉的陌生人 今后各自曲折,各自悲哀\ 只怪我们爱得那么汹涌,爱得那么深 于是梦醒了搁浅了沉默了挥手了\ 却回不了神,如果当初在交会时能忍住了 激动的灵魂"]; // 设置富文本基本属性 [attrStr setFont:[UIFont fontWithName:CUSTOM_FONT(@"华康少女字体", 0) size:12]]; [attrStr setTextColor:[UIColor whiteColor]]; [attrStr setTextColor:[UIColor redColor] range:NSMakeRange(9,4)]; [attrStr setTextIsUnderlined:YES range:NSMakeRange(9, 4)]; [attrStr setTextColor:[UIColor greenColor] range:NSMakeRange(125,30)]; [attrStr setFontName:CUSTOM_FONT(@"新蒂小丸子体", 0) size:12 range:NSMakeRange(125,30)];
// 设置样式 OHParagraphStyle* paragraphStyle = [OHParagraphStyle defaultParagraphStyle]; paragraphStyle.textAlignment = kCTTextAlignmentLeft; paragraphStyle.lineBreakMode = kCTLineBreakByWordWrapping; paragraphStyle.firstLineHeadIndent = 0.f; // indentation for first line paragraphStyle.lineSpacing = 3.f; // increase space between lines by 3 points [attrStr setParagraphStyle:paragraphStyle];
OHAttributedLabel *label = \ [[OHAttributedLabel alloc] initWithFrame:CGRectMake(0, 0, 300, 200)]; label.attributedText = attrStr; label.center = self.view.center; // 添加进主视图 [self.view addSubview:label];
以下是渲染的效果:
标题展示图片的代码
// 注册字体 REGISTER_FONT(bundleFont(@"xinDiXiaoWanzi.ttf"), @"新蒂小丸子体"); REGISTER_FONT(bundleFont(@"huaKangShaoNv.ttf"), @"华康少女字体"); // 创建富文本string NSMutableAttributedString* attrStr = \ [NSMutableAttributedString attributedStringWithString:\ @"游贤明\ 合抱之木,生于毫末;九层之合,起于垒土;千里之行,始于足下。 "]; // 设置富文本基本属性 [attrStr setFont:[UIFont fontWithName:CUSTOM_FONT(@"华康少女字体", 0) size:12]]; [attrStr setTextColor:[UIColor whiteColor]]; [attrStr setTextColor:[UIColor redColor] range:NSMakeRange(0,3)]; [attrStr setFontName:CUSTOM_FONT(@"新蒂小丸子体", 0) size:26 range:NSMakeRange(0,3)];
// 设置样式 OHParagraphStyle* paragraphStyle = [OHParagraphStyle defaultParagraphStyle]; paragraphStyle.textAlignment = kCTTextAlignmentLeft; paragraphStyle.lineBreakMode = kCTLineBreakByWordWrapping; paragraphStyle.firstLineHeadIndent = 0.f; // indentation for first line paragraphStyle.lineSpacing = 3.f; // increase space between lines by 3 points [attrStr setParagraphStyle:paragraphStyle];
OHAttributedLabel *label = \ [[OHAttributedLabel alloc] initWithFrame:CGRectMake(0, 0, 300, 200)]; label.attributedText = attrStr; label.center = self.view.center; // 添加进主视图 [self.view addSubview:label];
更加完美的设置:
// 注册字体 REGISTER_FONT(bundleFont(@"xinDiXiaoWanzi.ttf"), @"新蒂小丸子体"); REGISTER_FONT(bundleFont(@"huaKangShaoNv.ttf"), @"华康少女字体"); // 创建富文本string NSMutableAttributedString* attrStr = \ [NSMutableAttributedString attributedStringWithString:\ @"还记得吗,窗外那被月光染亮的海洋\n你还记得吗,是爱让彼此把夜点亮\n为何后来我们用沉默取代依赖,曾经朗朗星空,渐渐阴霾\n心碎离开,转身回到最初荒凉里等待\n为了寂寞,是否找个人填心中空白\n我们变成了世上,最熟悉的陌生人\n今后各自曲折,各自悲哀\n只怪我们爱得那么汹涌,爱得那么深\n于是梦醒了搁浅了沉默了挥手了却回不了神\n如果当初在交会时能忍住了,激动的灵魂"]; // 设置富文本基本属性 [attrStr setFontName:CUSTOM_FONT(@"华康少女字体", 0) size:12]; [attrStr setTextColor:[UIColor whiteColor]]; [attrStr setTextColor:[UIColor redColor] range:NSMakeRange(9,7)]; // 首字大写以及颜色设置 [attrStr setFontName:CUSTOM_FONT(@"华康少女字体", 0) size:23 range:NSMakeRange(0,1)]; [attrStr setTextColor:[UIColor yellowColor] range:NSMakeRange(0,1)]; // 中间字体重新设定 [attrStr setFontName:CUSTOM_FONT(@"新蒂小丸子体", 0) size:17 range:NSMakeRange(92,16)]; [attrStr setTextColor:[UIColor cyanColor] range:NSMakeRange(92,16)]; // 设置样式 OHParagraphStyle* paragraphStyle = [OHParagraphStyle defaultParagraphStyle]; paragraphStyle.textAlignment = kCTTextAlignmentCenter; paragraphStyle.paragraphSpacing = 3.f; paragraphStyle.paragraphSpacingBefore = 10.f; paragraphStyle.lineBreakMode = kCTLineBreakByWordWrapping; paragraphStyle.firstLineHeadIndent = 0.f; // indentation for first line paragraphStyle.lineSpacing = 3.f; // increase space between lines by 3 points [attrStr setParagraphStyle:paragraphStyle]; // 初始化富文本label OHAttributedLabel *label = \ [[OHAttributedLabel alloc] initWithFrame:CGRectMake(0, 0, 300, 400)]; label.attributedText = attrStr; label.center = self.view.center;
用富文本Label来显示文章
// 注册字体 REGISTER_FONT(bundleFont(@"xinDiXiaoWanzi.ttf"), @"新蒂小丸子体"); REGISTER_FONT(bundleFont(@"huaKangShaoNv.ttf"), @"华康少女字体"); // 创建富文本string NSMutableAttributedString* attrStr = \ [NSMutableAttributedString attributedStringWithString:\ @"人啊,再强大,又怎去敌那一抔黄土呢?说到底,这人生也不过就是山一程,水一程。与其把自己锁于跌撞里郁怨寡欢、得失不衡,还不如莞然一笑,迎着阳光,把所有的疼痛与繁复,都一一踏在脚下抛置身后。再以最安然祥和的颜靥,来谢过这一场生。 \n------题记/云微若雨\n是否,在佛堂看僧敲木鱼听梵音钟声,于寺庙拈香诵经濯骨洗心,虔诚脱胎如出家之人,方可让内心,少一份纷扰,多一份恬淡呢?可是,这六界风沙本就是那么的强烈与无常啊,怎去奢求一方安宁?尘世烟火如是冷凛如此淡薄,寄居萧瑟,飘絮染野,人们能做的,想是唯有抚著这颗涩涩的心,捡拾满地残红,浅浅掠过吧。"]; // 设置富文本基本属性 [attrStr setFontName:CUSTOM_FONT(@"华康少女字体", 0) size:12]; [attrStr setTextColor:[UIColor whiteColor]]; // 设置段落样式 OHParagraphStyle* paragraphStyle = [OHParagraphStyle defaultParagraphStyle]; paragraphStyle.textAlignment = kCTTextAlignmentNatural; paragraphStyle.paragraphSpacing = 12.f; paragraphStyle.paragraphSpacingBefore = 10.f; paragraphStyle.lineBreakMode = kCTLineBreakByWordWrapping; paragraphStyle.firstLineHeadIndent = 24.f; // 段落首字缩进 paragraphStyle.lineSpacing = 4.f; // 段落中两行的行间距 [attrStr setParagraphStyle:paragraphStyle]; // 初始化富文本label OHAttributedLabel *label = \ [[OHAttributedLabel alloc] initWithFrame:CGRectMake(0, 0, 300, 400)]; label.attributedText = attrStr; label.center = self.view.center; // 添加进主视图 [self.view addSubview:label];
【前端系列】- 富文本组件(mavon-editor) mavon-editor是一款基于vue的markdown编辑器,可以用来做文本的编辑,比如是某种业务需要发送公告、个人博客等,都可以用到,操作也十分简单。
关于tinymce富文本组件的一些总结 项目中初次用tinymce的时候遇到一大推问题,感觉这个组件太庞大,太笨重,尤其是网站反应那个慢啊,转半天反应不过来,api多的类找都找不到,现在都觉得很难驾驭它,下面是项目中所用到的api的整理: 项目目录: index.
文档预览功能使用技巧(3)---文字水印 智能媒体管理提供了文档预览功能,通过快速搭建文章的介绍,详细描述了使用“文档转换 + JS 前端渲染引擎” 实现文档预览的过程,本文将介绍预览功能中的文字水印技巧。
【Ueditor】富文本编辑使用 前提准备: 在http://ueditor.baidu.com/website/官网下载需要使用的版本。(我选用的1.4.3.1最新版本)因为这是以前做过的一个记录,现在移动到博客园保存记录。所有现在最新版本不是这个可能。
所谓的滑动菜单就是将一些菜单选项隐藏起来,而不是放置在主屏幕上,然后可以通过滑动的方式将菜单显示出来。这种方式既节省了屏幕空间,又实现了非常好的动画效果。
琴弦文字 - jquery插件 原文:琴弦文字 - jquery插件 这是一个基于jquery的琴弦效果插件。 以前曾经见过这个效果,有过尝试的想法但是当时技能点还不够。 前天在火车上偶然想起这个,认真思索了一下,一气呵成 :D 看来最近技能树点偏的不太远。
相关文章
- 使用扩散模型从文本生成图像
- 使用 Docker 和 HuggingFace 实现 NLP 文本情感分析应用
- 如何让机器听起来更像人?CMU博士论文探究可控文本生成
- Myary for mac(写作文本创建工具)
- 【CSS】文字溢出问题 ( 强制文本在一行中显示 | 隐藏文本的超出部分 | 使用省略号代替文本超出部分 )
- 【CSS】更改用户界面样式 ③ ( 取消文本域拖拽 | 代码示例 )
- 文本字段使用 Oracle 将单行文本字段转换为多行文本字段(oracle变多行)
- 类型MySQL中文本类型:最大存储自由度(mysql中text)
- 使用Oracle CLOB类型存储大文本数据(oracleclob)
- Oracle 存储文本的新方案(oracle存文本)
- Linux中使用wc命令统计文本行数(linux中wc命令)
- PRICAI 2016 论文精选 | 基于多核学习整合文本信息的微博图片情绪分析
- Linux命令之行截取:快速编辑文本的好帮手。(linux截取行)
- Linux中使用sed和C对文本进行处理(linuxsedc)
- MySQL管理大型长文本的实践(长文本mysql)
- 类型使用Oracle LONG类型存储大文本数据的好处(oracle的long)
- 掌握Linux Sed,轻松处理文本信息(linuxsed的使用)
- 轻松实现!Linux下如何简单提取文本(linux 提取文本)
- Linux字符连接:如何使用特殊字符将文本或文件连接到一起(linux 字符 连接)
- 使用FSO把文本信息导入数据库
- 使用XSL将XML文档中的CDATA注释输出为HTML文本
- java逐行读取txt文本如何解决中文乱码
- c语言操作文本的基本使用方法
- JavaSwing中的文本框(JTextField)与文本区(JTextArea)使用实例