NSAttribeautiful
NSAttribeautiful 是一个 iOS 和 MacOS 框架,提供了一种在单个字符串中使用多种样式(字体、大小和颜色)的简单方法
安装
CocoaPods
要使用 CocoaPods 将 NSAttribeautiful 集成到您的 Xcode 项目中,请将其添加到您的 Podfile
pod 'NSAttribeautiful'
然后,运行以下命令:
$ pod install
请确保在项目中“框架、库和嵌入内容”选项中选择“不嵌入”。
手动
-
克隆或[下载]仓库(《https://github.com/pillboxer/NSAttribeautiful-Distribution/archive/master.zip》)
-
解压后,将 NSAttribeautiful.xcframework 拖放到项目中“框架、库和嵌入内容”中
工作原理
- 选择一段需要多种格式样式的文本(例如文档)。
这是我需要格式化的文档
-
选择一对唯一的标记,用于封装任何NSAttribeautiful参数。默认前缀标记为
≤
,后缀标记为≥
。README中的所有示例都将使用默认标记。 -
定义GroupContainer并将其添加到任何文档的开头。容器内的每个Group都包含在中括号内,并遵循格式
fontName:fontSize:fontColor
≤[Copperplate:18:blue][Arial:18:red]≥ 这里是我的需要格式化的文档
- 使用您独特的标记封装任何需要样式化的参数
≤[Copperplate:18:blue][Arial:18:red]≥ 这里是我的 ≤document≥ 需要被 ≤formatted≥
- 默认情况下,每个Group将先应用于一个Argument,然后再应用于下一个。如果Arguments多于Groups(如上例所示),则最后一个Group将应用于任何多余的参数。您可以通过将GroupIndexContainer附加到文档末尾来覆盖此行为。
GroupIndexContainer明确说明您希望应用于特定参数的哪个Group。每个索引必须用逗号分隔。
在下面的示例中,Group 0(Copperplate)将应用于前两个参数("document"和"needs"),而Group 1将应用于最后一个参数。
≤[Copperplate:18:blue][Arial:18:red]≥ 这里是我的 ≤document≥ 需要被 ≤formatted≥ ≤[0,0,1]≥
- 您还可以在GroupContainer末尾添加一个可选的SpacingGroup。这将调整文档中行之间的间距。省略SpacingGroup将使用默认的
lineSpacing
(零)。对比以下两个文档
≤[Copperplate:18:blue][Arial:18:red][Avenir:18:green]≥ ≤First line≥\n≤Second line≥\n≤Third line≥
≤[Copperplate:18:blue][Arial:18:red][Avenir:18:green][spacing:10]≥ ≤First line≥\n≤Second line≥\n≤Third line≥
注意事项
GroupContainers
字体
在GroupContainer中的字体可能只包含字母字符。如果您的目标字体包含数字、特殊字符或任何其他字符(包括空格),您可以通过定义一个缩写来定义它。例如,如果您想在文档中使用
NSAttribeautiful.identifyAbbreviation("tnf", withFont: "Times New Roman")
大小
字体大小可以是整数(例如:12)或小数(例如:12.3)
颜色
默认情况下,NSAttribeautiful支持系统颜色变体的蓝色、绿色、靛蓝色、橙色、红色和黄色。您可以通过添加新的颜色集并指定目标颜色名称来轻松覆盖这些颜色或定义自己的颜色。
用法
let document = "≤[mcf:8.5:blue][tnf:18:red]≥ My ≤awesome≥ ≤document≥"
NSAttribeautiful.identifyAbbreviation("tnf", withFont: "Times New Roman")
NSAttribeautiful.identifyAbbreviation("mcf", withFont: "My Custom Font")
let attribeautiful = NSAttribeautiful(document: document)
do {
let beautified = try attribeautiful.beautifiedDocument()
// Do something...
}
catch let error {
// Handle error
}
调试
NSAttribeautiful可以将字符串转换的信息记录到控制台。您可以通过将NSAttribeautiful.debugLogLevel
设置为.none
、.errors
(默认)或.verbose
来自定义您要接收的信息量。