在ios开发中,我们一般都是在textfield或者textView中输入文字。当我们需要插入图片的时候其实也是很简单的

我们需要利用的textfield,textView的属性化文本,将图片以附件的形式插入

步骤如下:(以textView为了,oc中也是一样的)

  • 创建附件,同时设置好textView的字体大小(或者在storyBoard中设置)

             //设置字体
    textView.font = UIFont.systemFontOfSize()
    //创建附件
    let attachment = NSTextAttachment()
  • 将附件的图片属性设置为需要插入的图片,并将附件转化为属性化文本,并设置附件的大小

  1.          //设置附件的照片
    attachment.image = UIImage(图片名称)
    //设置附件的大小(-4这个数字可以根据实际情况调试,宽高也可以自己设置,这里用字体大小做参照)
    attachment.bounds = CGRectMake(, -, textView.font.lineHeight, textView.font.lineHeight)
    //将附件转成NSAttributedString类型的属性化文本
    let attStr = NSAttributedString(attachment: attachment)
  • 获取目前textView中的文本,转成可变的文本,记录光标的位置,并插入上一步中的属性化的文本
  1.         //获取textView的所有文本,转成可变的文本
    var mutableStr = NSMutableAttributedString(attributedString: textView.attributedText)
    //获得目前光标的位置
    let selectedRange = textView.selectedRange
    //插入文字
    mutableStr.insertAttributedString(attStr, atIndex: selectedRange.location)
  • 设置新的可变文本的属性,并计算新的光标位置
  1.          //设置可变文本的字体属性
    mutableStr.addAttribute(NSFontAttributeName, value: UIFont.systemFontOfSize(), range: NSMakeRange(,mutableStr.length))
    //再次记住新的光标的位置
    let newSelectedRange = NSMakeRange(selectedRange.location+, )
  • 将新文本赋值给textView,并恢复光标的位置
  •          //重新给文本赋值
    textView.attributedText = mutableStr
    //恢复光标的位置(上面一句代码执行之后,光标会移到最后面)
    textView.selectedRange = newSelectedRange

最新文章

  1. 《疯狂Java讲义》(二)---- Java程序的运行机制和JVM
  2. linux文件描述符数量的坑
  3. bzoj3555 企鹅QQ
  4. sql中写标量函数生成大写拼音首字母
  5. ThinkPHP的配置
  6. AlarmManager类的应用(实现闹钟功能)
  7. Java 9 揭秘(8. JDK 9重大改变)
  8. 使用clone
  9. 8086的分段寻址技术学习总结(Segmented Addressing)
  10. String.IndexOf 方法笔记
  11. 软件工程作业-(second)
  12. SPOJ Distinct Substrings SA
  13. 在Java中执行Tomcat中startup.bat
  14. PHP之PDO
  15. composer 安装新包失败的原因之一
  16. USB枚举过程【转】
  17. 目标检测之rcnn---开启检测新高度优于dpm
  18. [HDU6203]ping ping ping
  19. Hbase1.1.0.1配置集群
  20. 开源的PaaS方案:在OpenStack上部署CloudFoundry (二)部署OpenStack

热门文章

  1. 四十六、android中的Bitmap
  2. RabbitMQ封装实战
  3. beta冲刺总结-咸鱼
  4. c语音-第零次作业
  5. swift 编写欢迎界面-- ios开发
  6. iOS开发UIKit框架-可视化编程-XIB
  7. python使用tesseract-ocr完成验证码识别(安装部分)
  8. 04_Linux目录文件操作命令1(mv ls cd...)_我的Linux之路
  9. Spark学习笔记之RDD中的Transformation和Action函数
  10. sublimeText3 中配置sass环境,并将编译后文件保存到指定文件夹