MDHTMLLabel 是一个轻量级、易于使用的 UILabel 替代品,允许您使用 HTML(得益于 CoreText 补充了一些功能)自定义文本的外观,同时让您处理用户点击或长按链接的情况,并自动检测未包裹在锚标签中的链接。
功能
只需导入头文件并创建一个 MDHTMLLabel 实例,就像创建 UILabel 实例一样。
#import <MDHTMLLabel/MDHTMLLabel.h>
...
- (void)viewDidLoad
{
MDHTMLLabel *htmlLabel = [[MDHTMLLabel alloc] initWithFrame:frame];
htmlLabel.delegate = self;
htmlLabel.htmlText = htmlText;
[self.view addSubview:htmlLabel];
}
MDHTMLLabel 会自动在标签内创建用户交互式链接来表示 HTML 锚标签,并允许您通过实现可选的委托来检测用户何时点击或长按链接。委托有两个方法可供您实现
- (void)HTMLLabel:(MDHTMLLabel *)label didSelectLinkWithURL:(NSURL *)URL
- (void)HTMLLabel:(MDHTMLLabel *)label didHoldLinkWithURL:(NSURL *)URL
它还会检测文本中的任何未包裹在锚标签中的 URL,并为它们创建链接。
更改 MDHTMLLabel 的外观,可以类似地完成,但功能更多。内联样式可以使用 HTML 字体标签 完成,这允许您在文本中使用不同的字体、颜色和大小的组合。字体更改是通过 face
属性完成的,并且必须设置为可以通过 +UIFont fontWithName:
解析的字符串。
以下是在演示应用程序中如何使用它的示例。
NSString *const kDemoText = @"... <font face='Didot-Italic' size='19'>customise</font> ..."
MDHTMLLabel 还允许您使用 linkAttributes
属性来更改文本中链接的外观,该属性接受一个 NSDictionary
值字典,表示链接应该如何样式化。您还可以使用 activeLinkAttributes
属性设置用户点击链接时的高亮链接的外观,以及使用 inactiveLinkAttributes
设置视图 tint 颜色变化时的链接外观。
MDHTMLLabel *htmlLabel = [[MDHTMLLabel alloc] initWithFrame:frame];
htmlLabel.delegate = self;
htmlLabel.htmlText = htmlText;
htmlLabel.linkAttributes = @{ NSForegroundColorAttributeName: [UIColor blueColor],
NSFontAttributeName: [UIFont boldSystemFontOfSize:htmlLabel.font.pointSize],
NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle) };
htmlLabel.activeLinkAttributes = @{ NSForegroundColorAttributeName: [UIColor redColor],
NSFontAttributeName: [UIFont boldSystemFontOfSize:htmlLabel.font.pointSize],
NSUnderlineStyleAttributeName: @(NSUnderlineStyleSingle) };
MDHTMLLabel 是基于 RTLabel 开发的,没有它将无法实现
MDHTMLLabel 提供 MIT 许可。有关更多信息,请参阅 LICENSE 文件。