斜杠是一个 简单、可扩展 的标记语言,用于设置 NSAttributedStrings 的样式。这种语言在外观上与 HTML 类似,但是每个标签的含义是由用户定义的。
这个自述文档的第一段内容可以用斜杠标记语言表示如下:
<h1>Slash</h1>
Slash is a <strong>simple</strong>, <strong>extensible</strong> markup language
that simplifies the creation of NSAttributedStrings. The language is similar in
appearance to HTML, however the meaning of each tag is user-defined.
我们可以用以下方式从这个标记中创建一个新的 NSAttributedString:
NSAttributedString *myAttributedString = [SLSMarkupParser attributedStringWithMarkup:markup error:NULL];
生成的字符串将按照您将等价 HTML 添加到浏览器中时的格式进行格式化。
在 OS X 和 iOS 6.0 及以上版本中,斜杠提供了以下标签:
为了自定义这些标签的样式,定义额外的标签,或使用完全不同的标签集,传递一个字典,该字典定义了每个标签的属性字典。
NSDictionary *style = @{
@"$default" : @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue" size:14]},
@"strong" : @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Bold" size:14]},
@"em" : @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Italic" size:14]},
@"h1" : @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Medium" size:48]},
@"h2" : @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Medium" size:36]},
@"h3" : @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Medium" size:32]},
@"h4" : @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Medium" size:24]},
@"h5" : @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Medium" size:18]},
@"h6" : @{NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Medium" size:16]}
};
NSAttributedString *myAttributedString = [SLSMarkupParser attributedStringWithMarkup:markup style:style error:NULL];
当一段文本属于多个元素时,应用的属性将是每个标签字典的并集,最内层元素的属性具有优先权。有关 Cocoa/Cocoa Touch 文本渲染系统支持的属性列表,请参阅 iOS 或 OSX 的文档。
如果您想使用 “>” 或 “<” 字符,需要使用反斜杠进行转义(例如:\\>
)。
请注意,链接属性仅从 iOS 6.0 开始支持。
git clone https://github.com/chrisdevereux/Slash.git
$(BUILT_PRODUCTS_DIR)/include
添加到项目的头文件搜索路径(如果尚未添加)#import <Slash/Slash.h>
iOS 4.3 或 OS X 10.6(64位)以上。
iOS 6 之前的版本对富文本字符串的处理有限,并且某些斜杠功能需要 iOS 6。如果您要针对早期版本,请务必检查头文件文档。您还需要使用自定义视图(例如 NIAttributedLabel 或 TTTAttributedLabel)来显示字符串,并且您的样式所需的属性字典格式将由该视图定义。
在iPad 3代及更高版本上,以发布模式生成包含5个标签部分的200字符属性字符串大约需要0.5毫秒。如果您需要解析大量字符串,请考虑在后台队列中进行操作。
Slash遵循MIT许可证发布。
Chris Devereux