Creating NSAttributedString objects can be cumbersome to do in code. This library adds a helper object that can apply attributes to strings easily.
Add the following to your Cartfile:
github "davidahouse/Attributed" "master"
Then run carthage update
.
Follow the current instructions in Carthage's README for up to date installation instructions.
Add the following to your Podfile:
pod 'DAHAttributed'
You will also need to make sure you're opting into using frameworks:
use_frameworks!
Then run pod install
.
Creating a NSAttributedString with different formats applied to different sections of the string involves a lot of code. If you have some basic formatting needs, and some strings, this library allows for creating an NSAttributedString quickly.
The helper class is called Attributed
contains a set of formatting attributes, then gives a simple set
of methods for applying those attributes to strings or NSAttributedStrings. It also provides a way for
strings and NSAttributedStrings to be added together.
- No formatting at all
let noFormatting = Attributed()
- Apply a color
let redText = Attributed(color: NSColor.redColor())
let blueText = Attributed(color: NSColor.blueColor())
- Apply a font
let boldText = Attributed(font: NSFont.boldSystemFontOfSize(24))
- Multiple values
let detailsText = Attributed(attributes: [NSForegroundColorAttributeName: NSColor.greenColor(), NSFontAttributeName: NSFont.systemFontOfSize(18)])
- Apply the formatting to a String
let stringWithAttributes = redText.toString { "Hi mom!" }
- Apply the formatting to a NSAttributedString
let attributedStringWithAttributes = redText.toString { NSAttributedString(string: "The quick brown fox") }
- Combining Strings
let multipleStrings = boldText.combine(strings: "Hi mom!", "The quick brown fox")
- Nesting
let nestedStrings = redText.toString { boldText.toString { "Header: " } + "here are the details" }
- More nesting
let anotherNestedString = redText.toString { boldText.toString { "Header: " } + detailsText.toString { "here are the details" } + blueText.toString{ "@" } }
- Strings and attributed strings can be added together
let addedString = stringWithAttributes + " How are you?"