// // NSAttributedString.swift // VDS // // Created by Matt Bruce on 5/30/23. // import Foundation import UIKit extension NSAttributedString { public static func spacer(for width: CGFloat) -> NSAttributedString { let spacerImage = UIImage() let spacerAttachment = NSTextAttachment() spacerAttachment.bounds = .init(x: 0, y: 0, width: width, height: 1) spacerAttachment.image = spacerImage return NSAttributedString(attachment: spacerAttachment) } } extension NSMutableAttributedString { public static func mutableText(for text: String, textStyle: TextStyle, textColor: UIColor, alignment: NSTextAlignment = .left, lineBreakMode: NSLineBreakMode) -> NSMutableAttributedString { //create the paragraph for specific properties let paragraph = NSMutableParagraphStyle() paragraph.alignment = alignment paragraph.lineBreakMode = lineBreakMode //set lineHeight if textStyle.lineHeight > 0.0 { paragraph.maximumLineHeight = textStyle.lineHeight } //create the attributeArray var attributes: [NSAttributedString.Key : Any] = [.font: textStyle.font, .foregroundColor: textColor, .paragraphStyle: paragraph] //set letterSpacing if textStyle.letterSpacing > 0.0 { attributes[.kern] = textStyle.letterSpacing } return NSMutableAttributedString(string: text, attributes: attributes) } }