Chèn Image (icon) vào UILabel
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. Tạo image rồi set vào NSTextAttachment ...
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.
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.
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, awidth: image.size.awidth, height: image.size.height).integral } let attributedImage = NSAttributedString(attachment: textAttachment)