可以根据以下方法生成NSTextAttachment
func textAttachment(fontSize: CGFloat, image: UIImage) -> NSTextAttachment {
let font = UIFont.systemFont(ofSize: fontSize)
let textAttachment = NSTextAttachment()
textAttachment.image = image
let mid = font.descender + font.capHeight
textAttachment.bounds = CGRect(x: 0, y: font.descender - image.size.height / 2 + mid + 2, width: image.size.width, height: image.size.height).integral
return textAttachment
}
顺便写了一个抽象方法
func initAttribute(text: String, color: UIColor, _ attaches: NSTextAttachment...) -> NSMutableAttributedString {
let attributes = NSMutableAttributedString(string: text)
attributes.addAttributes([NSAttributedString.Key.foregroundColor : color, NSAttributedString.Key.font : UIFont.systemFont(ofSize: 14.0)], range: NSMakeRange(0, text.length))
for attach in attaches {
let attachStr = NSAttributedString(attachment: attach)
attributes.append(attachStr)
}
return attributes
}