049c1a386e03dde6e08fb2a9223843e8
富文本缓存后重新加载图片显示异常

我们通常从相册或相机中获取图片,然后通过NSTextAttachment添加到富文本中。

在富文本中添加图片,实现代码如下:

// Add the image as an attachme.
let textAttachment = NSTextAttachment()
textAttachment.image = image 
textAttachment.bounds = CGRect(origin: CGPoint.zero, size: image.size)
let textAttachmentString = NSMutableAttributedString(attributedString: NSAttributedString(attachment: textAttachment))

编辑好的富文本内容,以blob类型缓存到sqlite数据库中,进行数据缓存。
至此一切顺利进行,现在从缓存的数据中加载富文本,并将富文本内容在UITextView中显示,文本内容正常,图片却显示巨大。


下面我们先po上两张图片:

1、在UITextView中添加图片

2、从缓存中取出图片(图片非常大仅截取部分)


第一张图是通过NSTextAttachment添加图片在UITextView显示的正常效果,第二张图是从缓存中取出数据的显示效果。
通过以上的图片对比,我们能看到从数据缓存中获取的内容中是包含图片的,那么是什么导致图片不能正常显示呢,通过对代码的进一步调试发现attachment的bounds丢了,而attachment.bounds就是记录图片位置和图片宽高属性的。

log截图:attachment.bounds为0

top Created with Sketch.