• 【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
  • 相关阅读:
    四层架构设计实践
    看看node.js chat程序如何实现Ajax longpolling长链接刷新模式
    模仿igoogle【定制化、拖动排序,最大化、分屏】
    安装和配置Apache
    好书推荐《Pro ASP.NET MVC 3 Framework 3rd Edition》
    GAC和VS引用的程序集不一致?
    不要在 ASP.NET 4.5 Beta 的 Page 类事件上直接使用 async 与 await
    使用事务自动回滚来实现单元测试
    C# 如何异步查询数据库
    Linq + Jquery + Ajax 实现异步分页,批量删除,单个删除,全选,反选 ……
  • 原文地址:https://www.cnblogs.com/haojuncong/p/4528709.html
Copyright © 2020-2023  润新知