AttributedString.swift 1.0.3

AttributedString.swift 1.0.3

Michael Henry Pantaleonx 维护。



  • michaelhenry

AttributedString.swift

Swift 的 NSAttributed String 对象。

问题

问题是 attributes 是类型为 [NSAttributedStringKey: Any],即使所有 NSAttributedString.Key 的键都已经定义,但值仍然类型为 Any,这意味着我们必须处理任何东西。感觉这不是 Swift。

CI Status Version License Platform

Screenshot

安装

AttributedString.swift 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中

pod 'AttributedString.swift'

用法

安装完成后,只需 import AttributedString_swift

import AttributedString_swift

当在 NSMutableAttributedString 上添加更多 attributes 时,您可以使用 func addAttributes(attrs:[Attribute], for scope:Scope)

Scope 目前有三种类型:.all.subtextclosedRange

示例

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

作者

@michaelhenry

许可证

AttributedString.swift 在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。