vds_ios/VDS/Extensions/NSAttributedString.swift
Matt Bruce 759c6a1d52 removed var to set useMinimumLineHeight, this is now a required setting
Signed-off-by: Matt Bruce <matt.bruce@verizon.com>
2023-07-24 10:56:17 -05:00

64 lines
2.1 KiB
Swift

//
// 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 var useScaledLineHeight: Bool = false
public static func mutableText(for text: String, textStyle: TextStyle, useScaledFont: Bool = true, textColor: UIColor, alignment: NSTextAlignment = .left, lineBreakMode: NSLineBreakMode) -> NSMutableAttributedString {
//var for if you can scale or not
let scaledMode = useScaledFont && TextStyle.canScaleFonts
//create the paragraph for specific properties
let paragraph = NSMutableParagraphStyle()
paragraph.alignment = alignment
paragraph.lineBreakMode = lineBreakMode
var defaultFont = textStyle.font
var lineHeight = textStyle.lineHeight
if scaledMode {
defaultFont = defaultFont.scaledFont
if useScaledLineHeight {
lineHeight = textStyle.scaledLineHeight
}
}
//set lineHeight
if textStyle.lineHeight > 0.0 {
paragraph.minimumLineHeight = lineHeight
paragraph.maximumLineHeight = lineHeight
}
//create the attributeArray
var attributes: [NSAttributedString.Key : Any] = [.font: defaultFont,
.foregroundColor: textColor,
.paragraphStyle: paragraph]
//set letterSpacing
if textStyle.letterSpacing > 0.0 {
attributes[.kern] = textStyle.letterSpacing
}
return NSMutableAttributedString(string: text, attributes: attributes)
}
}