Generate UIImage of Initials from String
This is a class that will generate a UIImage of a person’s initials. Harry Potter would generate an image of HP.
InitialsImageFactory
Section titled “InitialsImageFactory”class InitialsImageFactory: NSObject {
class func imageWith(name: String?) -> UIImage? {
let frame = CGRect(x: 0, y: 0, width: 50, height: 50)let nameLabel = UILabel(frame: frame)nameLabel.textAlignment = .centernameLabel.backgroundColor = .lightGraynameLabel.textColor = .whitenameLabel.font = UIFont.boldSystemFont(ofSize: 20)var initials = ""
if let initialsArray = name?.components(separatedBy: " ") {
if let firstWord = initialsArray.first { if let firstLetter = firstWord.characters.first { initials += String(firstLetter).capitalized }
} if initialsArray.count > 1, let lastWord = initialsArray.last { if let lastLetter = lastWord.characters.first { initials += String(lastLetter).capitalized }
}} else { return nil}
nameLabel.text = initialsUIGraphicsBeginImageContext(frame.size)if let currentContext = UIGraphicsGetCurrentContext() { nameLabel.layer.render(in: currentContext) let nameImage = UIGraphicsGetImageFromCurrentImageContext() return nameImage}return nil}
}