最近在忙的项目中,需要处理富文本的相关内容,产品需求并不复杂,所以想着用TextKit处理,顺便学习一下,没想到直接掉坑。在此记录一下(都是血泪史),顺便为有需要的小伙伴提供参考。
// Add the image as an attachment.
let textAttachment = NSTextAttachment()
textAttachment.image = image
textAttachment.bounds = CGRect(origin: CGPoint.zero, size: image.size)
let textAttachmentString = NSMutableAttributedString(attributedString: NSAttributedString(attachment: textAttachment))
通过以上代码可以实现在UITextView中添加image,通常我们添加从相册或相机拍照中获取的图片很大,在UITextView中添加图片会将图片等比缩放,把缩放好的图片给textAttachment.image,然后神奇的事情发生了,图片是添加成功了,仔细一看被裁减掉了一部分,而且图片也不清晰。
想着是不是自己的缩放方法写的有问题,于是重新创建了一个项目,用UIImageView验证完全没问题。后来在stackoverflow上看到别人解答的另一个相关问题,得到了启发,需要自己override attachmentBounds方法,根据需要设置布局范围给布局管理器。
class MyAttachment: NSTextAttachment {
override func attachmentBounds(for textContainer: NSTextContainer?, proposedLineFragment lineFrag: CGRect, glyphPosition position: CGPoint, characterIndex charIndex: Int) -> CGRect {
//设置布局范围
}
}
至此添加图片显示的坑终于填上了。
网友评论