iOS中支持HTML文本的标签控件——MDHTMLLabel

简介: iOS中支持HTML文本的标签控件——MDHTMLLabel
    在iOS开发中对HTML的处理很多时候除了使用WebView外,还需要原生的控件对其进行渲染,例如将HTML字符串渲染为图文混排的View视图。Git上有很多轻量级的HTML渲染框架,列举一些如下:

RTLabel:基于UIView的HTML文本渲染控件,git地址:https://github.com/honcheng/RTLabel

RCLabel:与RTLabel思路相同,基于RCLabel之上,也是UIView的子类,支持了对HTML中的本地图片标签进行渲染。git地址:https://github.com/Janak-Nirmal/RichContentLabel

MDHTMLLabel:与RTLabel和RCLabel不同的是,其是UILabel的子类,更加轻量级,不能支持图片标签。git地址:https://github.com/mattdonnelly/MDHTMLLabel

关于RCLabel对图片便签的支持,其只能支持本地的图片,不能支持远程URL图片链接,这在开发中将十分局限,以前我曾加RCLabel做了改造,加了支持远程图片URL的方法,我把它集成在了一个基础框架中,需要的伙伴可以参考下,git地址:https://github.com/ZYHshao/YHBaseFoundationTest。配套的讲解博客地址如下:http://my.oschina.net/u/2340880/blog/499311。

本篇博客主要讨论MDHTMLLabel的使用。

MDHTMLLabel的创建与设置

  MDHTMLLabel框架十分小巧,其中只有两个文件,总计2000余行代码。通过HTML字符串来创建一个MDHTMLLabel控件示例代码如下:

NSString * kDemoText = @"<a href='http://github.com/mattdonnelly/MDHTMLLabel'>MDHTMLLabel</a> is a lightweight, easy to use replacement for <b>UILabel</b> which allows you to fully <font face='Didot-Italic' size='19'>customize</font> the appearence of the text using HTML (with a few added features thanks to <b>CoreText</b>), as well letting you handle whenever a user taps or holds down on link and automatically detects ones not wrapped in anchor tags/>";
MDHTMLLabel *htmlLabel = [[MDHTMLLabel alloc] initWithFrame:self.view.frame];
htmlLabel.numberOfLines = 0;
htmlLabel.htmlText = kDemoText;
[self.view addSubview:htmlLabel];

效果如下图所示:

MDHTMLLabel中可以设置的一些属性解析如下:

//设置超链接文字的属性字典 和设置AttributeString方法一致
@property (nonatomic, strong) NSDictionary *linkAttributes;
//设置超链接文字激活时的属性字典
@property (nonatomic, strong) NSDictionary *activeLinkAttributes;
//设置超链接非激活时的属性字典
@property (nonatomic, strong) NSDictionary *inactiveLinkAttributes;
//设置超链接文字触发长按事件的最小按下时间
@property (nonatomic, assign) NSTimeInterval minimumPressDuration;
//设置label文件阴影的模糊半径
@property (nonatomic, assign) CGFloat shadowRadius;
//设置label在高亮状态下的文字模糊半径 注:非高亮状态的由原生UILabel的属性设置
@property (nonatomic, assign) CGFloat highlightedShadowRadius;
//设置label在高亮状态下的文字阴影偏移 注:非高亮状态的由原生UILabel的属性设置
@property (nonatomic, assign) CGSize highlightedShadowOffset;
//设置在label高亮状态下的文字阴影颜色 注:非高亮状态的由原生UILabel的属性设置
@property (nonatomic, strong) UIColor *highlightedShadowColor;
//设置首行文字的缩进距离
@property (nonatomic, assign) CGFloat firstLineIndent;
//设置文字的行间距
@property (nonatomic, assign) CGFloat leading;
//设置行高的倍数
@property (nonatomic, assign) CGFloat lineHeightMultiple;
//设置文字内容的边距
@property (nonatomic, assign) UIEdgeInsets textInsets;
//设置文字垂直方向的对其模式 默认为居中对其 MDHTMLLabelVerticalAlignment枚举意义如下:
/*
typedef NS_ENUM(NSUInteger, MDHTMLLabelVerticalAlignment) {

MDHTMLLabelVerticalAlignmentCenter   = 0, //居中对其
MDHTMLLabelVerticalAlignmentTop      = 1, //顶部对其
MDHTMLLabelVerticalAlignmentBottom   = 2, //底部对其

};
*/
@property (nonatomic, assign) MDHTMLLabelVerticalAlignment verticalAlignment;
//设置文字的截断模式
@property (nonatomic, strong) NSString *truncationTokenString;
//根据内容获取控件尺寸

  • (CGFloat)sizeThatFitsHTMLString:(NSString *)htmlString

              withFont:(UIFont *)font
           constraints:(CGSize)size

    limitedToNumberOfLines:(NSUInteger)numberOfLines;

关于HTML数据中的超链接的相应,MDHTMLLabel是通过代理回调的方式处理的,如下:

@protocol MDHTMLLabelDelegate
@optional
//点击超链接的时候触发的方法

  • (void)HTMLLabel:(MDHTMLLabel )label didSelectLinkWithURL:(NSURL)URL;

//长按超链接时触发的方法

  • (void)HTMLLabel:(MDHTMLLabel )label didHoldLinkWithURL:(NSURL)URL;

@end

目录
相关文章
|
3月前
|
移动开发 搜索推荐 UED
HTML5的新语义化标签
HTML5引入的这些新语义化标签,通过明确标识内容的结构和意义,使得网页结构更加清晰,易于理解和维护。使用这些标签不仅提升了网页的可读性和可访问性,还增强了搜索引擎和辅助技术对网页内容的解析能力。在实际开发中,合理使用这些语义化标签,能够显著提升网页的质量和用户体验。
109 49
|
2月前
|
移动开发 前端开发 JavaScript
HTML(HyperText Markup Language,超文本标记语言)
HTML(HyperText Markup Language,超文本标记语言)
99 11
|
3月前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
86 5
|
4月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
896 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
3月前
|
移动开发 编解码 UED
除了 `<audio>` 和 `<video>` 标签,HTML5 还支持哪些多媒体格式?
【10月更文挑战第19天】HTML5对多种多媒体格式的支持,为网页开发者提供了丰富的选择,能够更好地满足不同类型多媒体内容在网页中的展示和交互需求,提升了网页的用户体验和多媒体应用的多样性。
|
3月前
|
XML JavaScript 前端开发
如何解析一个 HTML 文本
【10月更文挑战第23天】在实际应用中,根据具体的需求和场景,我们可以灵活选择解析方法,并结合其他相关技术来实现高效、准确的 HTML 解析。随着网页技术的不断发展,解析 HTML 文本的方法也在不断更新和完善,
|
3月前
|
存储 移动开发 前端开发
|
4月前
|
Web App开发 数据采集 移动开发
HTML5新增的属性和标签
HTML5新增的属性和标签
191 0
|
Web App开发 JSON 前端开发
|
1月前
|
iOS开发 开发者
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
141 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决

热门文章

最新文章

  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    24
  • 2
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
    21
  • 3
    uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
    141
  • 4
    【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
    224
  • 5
    app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
    87
  • 6
    深入探索iOS开发中的SwiftUI框架
    143
  • 7
    ios样式开关按钮jQuery插件
    58
  • 8
    Android与iOS生态差异深度剖析:技术架构、开发体验与市场影响####
    74
  • 9
    深入探索iOS与Android操作系统的安全性差异
    102
  • 10
    安卓与iOS开发中的跨平台策略:一次编码,多平台部署
    174