在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

【Swift】图文混排,ios开发中在textfield或textView中插入图片的更多相关文章

  1. ios开发--图文混排(富文本)

    最近准备接一个编辑类的app,所以就查了下相关的功能,并自己试验了下: /** iOS 6之前:CoreText,纯C语言,极其蛋疼 iOS 6开始:NSAttributedString,简单易用 i ...

  2. iOS开发 - 第05篇 - 项目 - 12 - 图文混排

    1.首页微博文字处理 对于之前微博项目中首页:微博文字中的用户名.话题.链接等文字须要高亮显示.表情字符串须要显示相应表情. 思路: 1>之前微博中的文字使用NSString,要达到不同文字的高 ...

  3. iOS 图文混排 链接 可点击

    对于这个话题 我想到 1 第一个解决方法就是使用 webView 比较经典 把所有复杂工作都交给控件本身去处理了,  但是好像好多需要自定义的地方 没法从 webView获得响应回调 :(估计也可以实 ...

  4. 自定义图文混排视图MyImageTextView

    http://blog.csdn.net/xujunfeng000/article/details/36399339?utm_source=tuicool&utm_medium=referra ...

  5. IOS开发UI篇--一个支持图文混排的ActionSheet

    一.简单介绍 UIActionSheet是IOS提供给我们开发人员的底部弹出菜单控件.一般用于菜单选择.操作确认.删除确认等功能.IOS官方提供的下面方式对UIActionView进行实例化: - ( ...

  6. 【iOS】使用CoreText实现图文混排

    iOS没有现成的支持图文混排的控件,而要用多个基础控件组合拼成图文混排这样复杂的排版,是件很苦逼的事情.对此的解决方案有使用CoreText进行绘制,或者使用TextKit.本文主要讲解对于CoreT ...

  7. iOS火焰动画效果、图文混排框架、StackView效果、偏好设置、底部手势等源码

    iOS精选源码 高性能图文混排框架,构架顺滑的iOS应用. 使用OpenGLE覆盖阿尔法通道视频动画播放器视图. 可选最大日期截至当日日期的日期轮选器ChooseDatePicker 简单轻量的图片浏 ...

  8. 【转】关于FLASH中图文混排聊天框的小结

    原文链接 图文混排也是FLASH里一个很古老的话题了,我们不像美国佬那样游戏里面聊天框就是聊天框,全是文字干干净净,也不像日本人发明了并且频繁地使用颜文字.不管是做论坛.做游戏,必定要实现的一点就是带 ...

  9. ios图文混排

    图文混排的形式 1. 富文本形式 2. core Text(文字排版) 3. TextKit 4. UIWebView 一.富文本 我们可以采用attributeString来进行图文混排.例如一个文 ...

随机推荐

  1. lua精灵移除报对象非法

    function addLeftCard(isVisible) if self.left_CardSprite == nil then self.left_CardSprite = cc.Sprite ...

  2. 慢查询日志分析(mysql)

    开启慢查询日志之后,慢查询sql会被存到数据库系统表mysql.slow_log或是文件中,可参考.有两个工具可以帮助我们分析输出报告,分别是mysqldumpslow和pt-query-digest ...

  3. 一周Maven框架学习随笔

    第一次写博客,可能写得不是很好,但是希望自己持之以恒,以后会更好.也希望通过写博客记录随笔,让自己本身有所收获. 下面是今天的maven总结: maven个人理解中是Maven项目对象模型(POM), ...

  4. 如何使用maven搭建web项目

    博客园注册了有二十多天了,还没有写过博客,今天就发一篇,也便于后面查找笔记. 我个人已经做了几年的java web开发了,由于所在的公司是业务型公司,用的都是一些老旧的稳定技术,很少接触到稍微新点的内 ...

  5. 使用linux下的crontab定时任务跑定时脚本

    使用linux下的crontab定时任务跑定时脚本 tags:定时任务 定时脚本 crontab linux定时脚本 linux 引言:应该有许多人曾经很好奇一些定时脚本是怎么做出来的.我们这次就来说 ...

  6. C程序设计-----第0次作业

    C程序设计-----第0次作业- 1.翻阅邹欣老师的关于师生关系博客,并回答下列问题,每个问题的答案不少于500字:(50分)- 1)最理想的师生关系是健身教练和学员的关系,在这种师生关系中你期望获得 ...

  7. C程序第一次作业

    1-1 计算两数的和与差 1 设计思路 (1)主要描述题目算法 第一步:利用指针psum接收sum的地址,指针pdiff接收diff的地址,因此 * psum为sum, * pdiff为diff. 第 ...

  8. fs输出文件目录

    var http = require("http"); var fs = require("fs"); var server = http.createServ ...

  9. iOS开发-OC数据类型

    以下是OC中的实例,Swift部分不适用 iOS中的注释 // 单行注释 // 注释对代码起到解释说明的作用,注释是给程序员看的,不参与程序运行 /*  多行注释   Xcode快捷键   全选 cm ...

  10. javascript参数传递中处理+号

    在传值过程中,如果+号也是值的一部分,那就需要对+号进行处理.否则+号会被过滤掉. 处理方式:只需要把js中传过去的+号替换成base64 编码 %2B encodeURI(str).replace( ...