首页 > 解决方案 > NSTextAttachment() 额外属性

问题描述

我想在我添加到我的 UITextView. 班级是NSTextAttachment()。我需要我的图像有一些 String 描述,以便应用程序知道图像中的内容。如何添加这个额外的功能?是通过一个 Extension吗?

let attachment = NSTextAttachment()
attachment.image = image
attachment.bounds = CGRect(origin: .zero, size: image.size)
// Extra properties wanted
attachment.description = "add in info about what is in attachment"
attachment.moreInfo = "some more info about the attachment"

标签: iosswiftuitextview

解决方案


class EmojiTextAttachment:NSTextAttachment{    
}
private var EmotagAssociationKey:String? = nil
extension EmojiTextAttachment{

    var emoticonName:String?{
        get {return objc_getAssociatedObject(self,&EmotagAssociationKey) as? String ?? ""}
        set {objc_setAssociatedObject(self, &EmotagAssociationKey, newValue, .OBJC_ASSOCIATION_RETAIN) }
    }
}

已经有一段时间了,但我的解决方案已经完成。扩展您可以使用和NSTextAttachment 添加参数objc_getAssociatedObjectobjc_setAssociatedObject

使用时,使用EmojiTextAttachment代替NSTextAttachment.

  let emoticon:EmojiTextAttachment = EmojiTextAttachment()
                    let image = UIImage(named: myImage) as UIImage!
                    emoticon.image = image?.resizeSelf(newWidth, newHeight)
                    emoticon.emoticonName = emoname

https://developer.apple.com/documentation/objectivec/1418865-objc_getassociatedobject的文档objc_getAssociatedObject


推荐阅读