最近在忙的项目中,须要处理富文本的相关内容,产品需求并不复杂,因此想着用TextKit处理,顺便学习一下,没想到直接掉坑。在此记录一下(都是血泪史),顺便为有须要的小伙伴提供参考。swift
// 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,而后神奇的事情发生了,图片是添加成功了,仔细一看被裁减掉了一部分,并且图片也不清晰。ide
想着是否是本身的缩放方法写的有问题,因而从新建立了一个项目,用UIImageView验证彻底没问题。后来在stackoverflow上看到别人解答的另外一个相关问题,获得了启发,须要本身override attachmentBounds方法,根据须要设置布局范围给布局管理器。布局
class MyAttachment: NSTextAttachment { override func attachmentBounds(for textContainer: NSTextContainer?, proposedLineFragment lineFrag: CGRect, glyphPosition position: CGPoint, characterIndex charIndex: Int) -> CGRect { //设置布局范围 } }
至此添加图片显示的坑终于填上了。学习