Skip to content
Swifty NSAttributed String.
Swift Ruby
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
AttributedString.swift added underlineStyle Aug 23, 2019
Example added underlineStyle Aug 23, 2019
images update readme Aug 22, 2019
.gitignore
.travis.yml
AttributedString.swift.podspec removed specific swift version Aug 22, 2019
LICENSE Initial commit Aug 21, 2019
README.md Update readme [ci skip] Aug 22, 2019
_Pods.xcodeproj Initial commit Aug 21, 2019

README.md

AttributedString.swift

Swifty NSAttributed String.

Problem

The problem is attributes is a [NSAttributedStringKey: Any], even though the keys NSAttributedString.Key are all defined, the values still a type of Any, which means we have to deal with literally Anything. And feel like it's not swift.

CI Status Version License Platform

Screenshot

Installation

AttributedString.swift is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'AttributedString.swift'

How to use

After installation, Just import AttributedString_swift

import AttributedString_swift

When adding more attributes on a NSMutableAttributedString, you can use the func addAttributes(attrs:[Attribute], for scope:Scope).

Scope has currently have 3 types: .all, .subtext, closedRange.

Example

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

To run the example project, clone the repo, and run pod install from the Example directory first.

Author

@michaelhenry

License

AttributedString.swift is available under the MIT license. See the LICENSE file for more info.

You can’t perform that action at this time.