AttributedString.swift
Swift 的 NSAttributed String 对象。
问题
问题是 attributes
是类型为 [NSAttributedStringKey: Any]
,即使所有 NSAttributedString.Key
的键都已经定义,但值仍然类型为 Any
,这意味着我们必须处理任何东西。感觉这不是 Swift。
安装
AttributedString.swift 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中
pod 'AttributedString.swift'
用法
安装完成后,只需 import AttributedString_swift
import AttributedString_swift
当在 NSMutableAttributedString 上添加更多 attributes 时,您可以使用 func addAttributes(attrs:[Attribute], for scope:Scope)
。
Scope
目前有三种类型:.all
、.subtext
、closedRange
。
示例
import AttributedString_swift
let label1 = Label()
let label2 = Label()
...
label1.attributedText = NSAttributedString(
string: "Hello World",
attrs:[
.font(UIFont.boldSystemFont(ofSize: 30)),
.link("https://www.google.com")
])
let attrText2 = NSMutableAttributedString(
string: "The quick brown fox jump over the lazy dog.",
attrs: [
.font(.systemFont(ofSize: 18)),
.foregroundColor(.orange)
])
// Adding more attributes!
attrText2.addAttributes(
attrs: [
.font(.boldSystemFont(ofSize: 50)),
.foregroundColor(.gray)
],
for: .subtext("The"))
attrText2.addAttributes(
attrs: [
.foregroundColor(.green),
.font(.systemFont(ofSize: 50))
],
for: .closedRange(4...8))
attrText2.addAttributes(
attrs: [
.foregroundColor(.red),
.font(.boldSystemFont(ofSize: 50))],
for: .closedRange(10...15))
attrText2.addAttributes(
attrs: [
.font(.boldSystemFont(ofSize: 30)),
.link("https://en.wikipedia.org/wiki/Dog"),
],
for: .subtext("dog"))
// With paragraph style for whole text
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.alignment = .center
attrText2.addAttributes(
attrs: [
.paragraphStyle(paragraphStyle)
],
for: .all)
label2.attributedText = attrText2
要运行示例项目,请克隆仓库,然后先从Example目录运行pod install
。
作者
许可证
AttributedString.swift 在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。