Design string simply by linking attributes.
Create Decorator
with specific Style
and link it at the end of needed string or wrap for styling:
"Style" + d1 + "Decorator" + d2 + "!"
// or
d1.wrap("Style") + d2.wrap("Decorator") + "!"
Example:
let a = Decorator(style: Style().foregroundColor(.black).kerning(-0.5).backgroundColor(.darkGray))
let b = Decorator(style: Style().foregroundColor(.white).backgroundColor(.black))
let c = Decorator(style: Style().foregroundColor(.gray).alignment(.right))
// You can write in syntax you prefer
let decoratedText = "Bold" + a + "Heavy" + b + "Black" + c
label.attributedText = NSAttributedString(decorator: decoratedText)
// or
let a1 = a.wrap, b1 = b.wrap, c1 = c.wrap
let decoratedText2 = a1("Bold") + b1("Heavy") + c1("Black")
label.attributedText = NSAttributedString(decorator: decoratedText2)
String can be designed dynamically:
// check Example for detailed code, where created 'd', 'e', 'f' etc
let titleText = "! " + ("Bold" + b + "Heavy" + c + "Black" + d)
let decoratedText = "Decorate attributed string simply" + a + "\n\n" + titleText + "\n\n" + "Right" + e + "\n" + "below black rect with red line" + f + "\n\n\nwith default attributes"
let defaultAttributes = Style()
.font(UIFont.systemFont(ofSize: 15, weight: UIFontWeightBlack))
.alignment(.center)
.attributes
label.attributedText = NSAttributedString(decorator: decoratedText, attributes: defaultAttributes)
For Swift 4 version use v.0.4.2
For Swift 3.1 version use v.0.3.0
StyleDecorator is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod "StyleDecorator"
Dmytro Pylypenko, dimpiax@gmail.com
StyleDecorator is available under the MIT license. See the LICENSE file for more info.