描述
标识是一个用于创建和设置 NSAttributedString
值的轻量级包装器。
要求
- iOS 8.0+
安装
标识通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile
中。
pod "Marker"
用法
文字样式
Marker将最常见的文字属性抽象成一个名为TextStyle
的数据对象,可以利用它来创建NSAttributedString
。一个TextStyle
可以有以下属性:
- 文字颜色
- 常规字体
- 斜体字体
- 粗体字体
- 字符间距
- 行间距
- 行高
- 段落和行缩进
- 段落间距
- 文字对齐方式
- 行断行模式
- 删除线样式和颜色
- 下划线样式和颜色
- 文字转换选项
TextStyle
对象是聚合样式信息的一种简单方式。例如
var headlineTextStyle: TextStyle {
let font: UIFont = UIFont.systemFontOfSize(23)
let emFont: UIFont = UIFont.italicSystemFontOfSize(23)
let strongFont: UIFont = UIFont.boldSystemFontOfSize(23)
let characterSpacing: CGFloat? = 2
let strikethroughStyle: NSUnderlineStyle = .styleSingle
return TextStyle(font: regularFont,
emFont: emFont,
strongFont: strongFont,
characterSpacing: characterSpacing,
strikethroughStyle: strikethroughStyle)
}
设置富文本
Marker提供了方便的扩展来设置常见UI元素的attributedText
UIButton
UILabel
UITextField
UITextView
要在这些元素上设置文字,请使用setText(_:using:customMarkup:)
函数(对于UIButton,请使用setTitleText(_:using:customMarkup:)
)。
label.setText("Hello World", using: headlineTextStyle)
您可以传递自定义标记信息,以便单独使用自定义TextStyle
来设置指定文本的样式。
var blueTextStyle = headlineTextStyle
blueTextStyle.textColor = UIColor.blue
label.setText("The sky is #blue#.",
using: headlineTextStyle,
customMarkup: ["#": blueTextStyle])
Markdown
Marker也支持使用常见Markdown标签来设置文字
- 粗体(
__
或**
) - 斜体(
_
或*
) - 链接(
[]()
)
以及Marker特定的便捷Markdown标签
- 删除线(
~~
) - 下划线(
==
)
要设置Markdown文本,请使用setMarkdownText(_:using:)
函数(对于按钮请使用setMarkdownTitleText(_:using:)
)。注意:设置Markdown链接只能在文本视图中工作,而其他Markdown标签可以应用于具有上述setMarkdownText(_using:)
函数的任何UI元素。
textField.setMarkdownText("_Hello World_", using: headlineTextStyle)
转义
Markdown和自定义标记函数都支持反斜杠转义来生成未被标记用途保留的字符。例如,包含 ")" 字符的URL如果没有反斜杠转义将无法正确解析。
[Wiki](https://en.wikipedia.org/wiki/Wiki_(disambiguation))
默认情况下,解析器生成https://en.wikipedia.org/wiki/Wiki_(disambiguation
作为上述链接的URL。
[Wiki](https://en.wikipedia.org/wiki/Wiki_(disambiguation\))
通过转义反斜杠("\)"字符),解析器将其视为文字并生成正确的URL,https://en.wikipedia.org/wiki/Wiki_(disambiguation))
。
最佳实践
对自定义标记和Markdown字符串进行解析操作可能会太慢,不适合用于性能关键的观点,如UITableViewCell
。在这种情况下,建议缓存并重用从Marker
函数返回的NSAttributedString
,而不是直接调用setText(_:using:customMarkup:)
或setMarkdownText(_:using:)
。
为Marker贡献力量
如要报告错误或增强请求,请在此标题下免费提交问题。
如果您想为项目贡献力量,请Fork此库并提交pull request。代码贡献应遵循Prolific Swift Style Guide
中指定的标准。
许可
版权所有 © 2019 Prolific Interactive
Marker由Prolific Interactive维护和赞助。它可以根据LICENSE文件中指定的条款重新分发。