【Swift】圖文混排,ios開發中在textfield或textView中插入圖片


在ios開發中,我們一般都是在textfield或者textView中輸入文字。當我們需要插入圖片的時候其實也是很簡單的

我們需要利用的textfield,textView的屬性化文本,將圖片以附件的形式插入

步驟如下:(以textView為了,oc中也是一樣的)

  • 創建附件,同時設置好textView的字體大小(或者在storyBoard中設置)
    1         //設置字體
    2         textView.font = UIFont.systemFontOfSize(24)
    3         //創建附件
    4         let attachment = NSTextAttachment()

  • 將附件的圖片屬性設置為需要插入的圖片,並將附件轉化為屬性化文本,並設置附件的大小

  1. 1         //設置附件的照片
    2         attachment.image = UIImage(圖片名稱)
    3         //設置附件的大小(-4這個數字可以根據實際情況調試,寬高也可以自己設置,這里用字體大小做參照)
    4         attachment.bounds = CGRectMake(0, -4, textView.font.lineHeight, textView.font.lineHeight)
    5         //將附件轉成NSAttributedString類型的屬性化文本
    6         let attStr = NSAttributedString(attachment: attachment)

     

  • 獲取目前textView中的文本,轉成可變的文本,記錄光標的位置,並插入上一步中的屬性化的文本
  1. 1        //獲取textView的所有文本,轉成可變的文本
    2         var mutableStr = NSMutableAttributedString(attributedString: textView.attributedText)
    3         //獲得目前光標的位置
    4         let selectedRange = textView.selectedRange
    5         //插入文字
    6         mutableStr.insertAttributedString(attStr, atIndex: selectedRange.location)

     

  • 設置新的可變文本的屬性,並計算新的光標位置
  1. 1         //設置可變文本的字體屬性
    2         mutableStr.addAttribute(NSFontAttributeName, value: UIFont.systemFontOfSize(24), range: NSMakeRange(0,mutableStr.length))
    3         //再次記住新的光標的位置
    4         let newSelectedRange = NSMakeRange(selectedRange.location+1, 0)

     

  • 將新文本賦值給textView,並恢復光標的位置
  • 1         //重新給文本賦值
    2         textView.attributedText = mutableStr
    3         //恢復光標的位置(上面一句代碼執行之后,光標會移到最后面)
    4         textView.selectedRange = newSelectedRange

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM