在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. SDK提交到CocoaPods

    一:GitHub新建仓库,并clone到本地 1.注册GitHub账号并登录 2.右上方点击+,新建仓库(仓库名字(Repository name).仓库权限(Public).readme.licen ...

  2. Java基础笔记(1)----语言基础

    变量 变量:是内存中的一块存储空间,是存储数据的基本单元. 使用:先声明,后赋值,在使用. 声明:数据类型 + 变量名 = 值.(例:int a = 5:) 数据类型 分类:如图: 详解: Strin ...

  3. 通过运行一个tomcat容器来记录下初学docker常用的几个命令---容器篇

    1.查看容器列表 显示正在运行的容器: [root@localhost HMK]# docker ps 显示所有容器,包括未运行的: [root@localhost HMK]# docker ps - ...

  4. beta冲刺5-咸鱼

    昨天的问题: 登陆页面的整合重新制作 各主机版本更迭 我的社团显示功能修改调整 主页的头部替换掉 +修复帖子无法显示内容的问题 +试着将邮箱等判定用正则表达式进行实时判定. 今天的完成: 主要是线下进 ...

  5. C语言的第一次作业

    一.PTA实验作业 题目1. 温度转换 本题要求编写程序,计算华氏温度150°F对应的摄氏温度.计算公式:C=5×(F−32)/9,式中:C表示摄氏温度,F表示华氏温度,输出数据要求为整型. 1.实验 ...

  6. C语言--第七周作业

    一.求交错序列前N项和 1.代码 #include <stdio.h> int main() { int i=1,N; double j=0,sum=0; scanf("%d&q ...

  7. java 1.7新特性

    try( ... ){ ... } catch(xxx e){ ... } java1.7特性,叫做try-with-resource,实现了AutoCloseable接口的实例可以放在try(... ...

  8. linux下安装配置jdk(解压版)

    在linux下登录oracle官网,下载解压版jdk    传送门 系统默认下载到"下载"目录中 创建要将该文件解压的文件夹: 其中 -p 参数代表递归创建文件夹(可以创建多级目录 ...

  9. Spring Security 入门(1-3-3)Spring Security - logout 退出登录

    要实现退出登录的功能我们需要在 http 元素下定义 logout 元素,这样 Spring Security 将自动为我们添加用于处理退出登录的过滤器 LogoutFilter 到 FilterCh ...

  10. Python:使用youtube-dl+ffmpeg+FQ软件下载youtube视频

    声明:本文所述内容都是从http://blog.csdn.net/u011475134/article/details/71023612博文中学习而来. 背景: 一同学想通过FQ软件下载一些youtu ...