1. 程式人生 > 實用技巧 >iOS使用NSTextAttachment新增圖片,圖片模糊

iOS使用NSTextAttachment新增圖片,圖片模糊

最近在忙的專案中,需要處理富文字的相關內容,產品需求並不複雜,所以想著用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 {
    //設定佈局範圍
    }
}

至此新增圖片顯示的坑終於填上了。