An easier way to compose attributed strings

TextAttributes

TextAttributes makes it easy to compose attributed strings.

let attrs = TextAttributes()
    .font(name: "HelveticaNeue", size: 16)
    .foregroundColor(white: 0.2, alpha: 1)
    .lineHeightMultiple(1.5)

NSAttributedString(string: "The quick brown fox jumps over the lazy dog", attributes: attrs)

Features

  • [x] Strongly typed properties
  • [x] Chainable setter methods
  • [x] A direct access to the NSParagraphStyle properties
  • [x] Better autocompletion

Usage

  • Get or set the TextAttributes properties:
attrs.font = UIFont(name: "HelveticaNeue", size: 16)
attrs.backgroundColor = .white

See all the properties

  • Method chaining:

The TextAttributes methods return Self to allow method chaining:

attrs
    .lineHeightMultiple(1.5)
    .underlineStyle(.styleSingle)

See all the methods

  • The methods are also constructors:

The following are equivalent:

attrs
    .font(name: "HelveticaNeue", size: 16)
    .foregroundColor(white: 0.2, alpha: 1)
let font  = UIFont(name: "HelveticaNeue", size: 16)
let color = UIColor(white: 0.2, alpha: 1)

attrs
    .font(font)
    .foregroundColor(color)
  • Access the underlying dictionary:
attrs.dictionary // Returns the attributes dictionary of type [NSAttributedString.Key: Any]

Third-party libraries:

Demo

Live updates with Injection for Xcode

References

Attributes dictionary

Dictionary Key TextAttributes Property TextAttributes Method
NSFontAttributeName font font(name:size:)
font(_:)
NSParagraphStyleAttributeName paragraphStyle paragraphStyle(_:)
NSForegroundColorAttributeName foregroundColor foregroundColor(_:)
foregroundColor(white:alpha:)
foregroundColor(hue:saturation:brightness:alpha:)
foregroundColor(red:green:blue:alpha:)
foregroundColor(patternImage:)
NSBackgroundColorAttributeName backgroundColor backgroundColor(_:)
backgroundColor(white:alpha:)
backgroundColor(hue:saturation:brightness:alpha:)
backgroundColor(red:green:blue:alpha:)
backgroundColor(patternImage:)
NSLigatureAttributeName ligature ligature(_:)
NSKernAttributeName kern kern(_:)
NSStrikethroughStyleAttributeName strikethroughStyle strikethroughStyle(_:)
NSStrikethroughColorAttributeName strikethroughColor strikethroughColor(_:)
strikethroughColor(white:alpha:)
strikethroughColor(hue:saturation:brightness:alpha:)
strikethroughColor(red:green:blue:alpha:)
strikethroughColor(patternImage:)
NSUnderlineStyleAttributeName underlineStyle underlineStyle(_:)
NSUnderlineColorAttributeName underlineColor underlineColor(_:)
underlineColor(white:alpha:)
underlineColor(hue:saturation:brightness:alpha:)
underlineColor(red:green:blue:alpha:)
underlineColor(patternImage:)
NSStrokeWidthAttributeName strokeWidth strokeWidth(_:)
NSStrokeColorAttributeName strokeColor strokeColor(_:)
strokeColor(white:alpha:)
strokeColor(hue:saturation:brightness:alpha:)
strokeColor(red:green:blue:alpha:)
strokeColor(patternImage:)
NSShadowAttributeName shadow shadow(_:)
shadow(color:offset:blurRadius:)
NSTextEffectAttributeName textEffect textEffect(_:)
NSAttachmentAttributeName attachment attachment(_:)
NSLinkAttributeName link link(_:)
link(string:)
link(string:relativeToURL:)
NSBaselineOffsetAttributeName baselineOffset baselineOffset(_:)
NSObliquenessAttributeName obliqueness obliqueness(_:)
NSExpansionAttributeName expansion expansion(_:)
NSVerticalGlyphFormAttributeName verticalGlyphForm verticalGlyphForm(_:)

Paragraph style

NSMutableParagraphStyle Property TextAttributes Property TextAttributes Method
alignment alignment alignment(_:)
firstLineHeadIndent firstLineHeadIndent firstLineHeadIndent(_:)
headIndent headIndent headIndent(_:)
tailIndent tailIndent tailIndent(_:)
lineBreakMode lineBreakMode lineBreakMode(_:)
maximumLineHeight maximumLineHeight maximumLineHeight(_:)
lineSpacing lineSpacing lineSpacing(_:)
paragraphSpacing paragraphSpacing paragraphSpacing(_:)
paragraphSpacingBefore paragraphSpacingBefore paragraphSpacingBefore(_:)
baseWritingDirection baseWritingDirection baseWritingDirection(_:)
lineHeightMultiple lineHeightMultiple lineHeightMultiple(_:)

Installation

Carthage

Carthage is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate TextAttributes into your Xcode project using Carthage, specify it in your Cartfile:

github "delba/TextAttributes"

Cocoapods

CocoaPods is a dependency manager for Cocoa projects.

You can install it with the following command:

$ gem install cocoapods

To integrate TextAttributes into your Xcode project using CocoaPods, specify it in your Podfile:

use_frameworks!

pod 'TextAttributes'

GitHub

https://github.com/delba/TextAttributes