MDHTMLLabel 1.0.2

MDHTMLLabel 1.0.2

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布最后发布2014年12月

未指明的 维护。



  • 马特·多尼利

MDHTMLLabel 是一个轻量级、易于使用的 UILabel 替代品,允许您使用 HTML(得益于 CoreText 补充了一些功能)自定义文本的外观,同时让您处理用户点击或长按链接的情况,并自动检测未包裹在锚标签中的链接。

功能

  • 使用 HTML 完全样式文本
  • 链接交互处理
  • 自动检测未包裹在锚标签中的 URL
  • 支持字体标签
  • 粗体和斜体文本样式
  • 颜色和描边样式
  • 文本阴影
  • 首行缩进、字间距和行间距设置
  • 文本内边距
  • 支持 iOS 6.0+

MDHTMLLabel

入门

如何使用

只需导入头文件并创建一个 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 文件。