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
- 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:
- muukii/TextAttributesUtil Quickly create NSAttributedString with TextAttributes
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'