Chèn Image (icon) vào UILabel
Bài đăng này đã không được cập nhật trong 3 năm
Làm thế nào để chèn image vào UILabel. Bạn không thể chèn 1 image vào String ,nhưng lại có thể chèn image vào NSAttributedString.Nên để tạo 1 UILabel với nội dung image thì việc đầu tiên là tạo 1 NSAttributedString được chèn image rồi set attributedText.
NSTextAttachment
Tạo image rồi set vào NSTextAttachment vào sau đó tạo NSAttributedString với NSTextAttachment object vừa đc set image.
// attachment
let textAttachment: NSTextAttachment = NSTextAttachment()
textAttachment.image = UIImage(named: "icon.png")
let attributedImage = NSAttributedString(attachment: textAttachment)
Set NSAttributedString vào UILabel
let label = UILable()
label.attributedText = attributedImage
Tuy nhiên, Image sau khi đc set vào Label sẽ bị lêch lên trên so với text của label, nên để chỉnh image ở center so với label thì mình căn chỉnh như sau.
Căn chỉnh Image in Center
Mỗi UILabel sẽ đi kèm với UIFont, mỗi font sẽ có những giá ascender, descender khác nhau.Và do đó image khi chèn sẽ bị lêch lên trên với những giá trị khác nhau.
// attachment
let textAttachment: NSTextAttachment = NSTextAttachment()
textAttachment.image = UIImage(named: "icon.png")
// center font
if let image = textAttachment.image,
let _font = font {
let y = ((_font.ascender - _font.descender)/2 - image.size.height/2)
textAttachment.bounds = CGRect(x: 0, y: y, width: image.size.width, height: image.size.height).integral
}
let attributedImage = NSAttributedString(attachment: textAttachment)
All rights reserved