图文混排中,在textView的指定光标下插入文字或图片

    override func viewDidLoad() {

        super.viewDidLoad()
 
        demoTextView.text = "我是大帅比,真的是一个大帅比,确实是一个大帅比"

    }

    
    //插入文字
    @IBAction func insetText(sender: AnyObject) {
      
        //创建属性字符串
        let attrStr = NSAttributedString(string: "美女", attributes: [NSForegroundColorAttributeName:UIColor.redColor()])
        
        let font = demoTextView.font!
        
        //创建可变属性字符串
        let attrMutableStr = NSMutableAttributedString(attributedString: demoTextView.attributedText)
        
        //将图片属性字符串替换到可变属性字符串的某一个位置
        //获取光标所在位置
        let range = demoTextView.selectedRange
        
        //替换属性字符串
        attrMutableStr.replaceCharactersInRange(range, withAttributedString: attrStr)
        
        //显示属性字符串
        demoTextView.attributedText = attrMutableStr
        
        //将文字大小重置
        demoTextView.font = font
        
        //将光标设置回原来的位置
        demoTextView.selectedRange = NSRange(location: range.location + 2, length : 0)

    }


     //插入图片
    @IBAction func insetImage(sender: AnyObject) {
        
        //创建图片属性字符串
        let attachment = NSTextAttachment()
        attachment.image = UIImage(named: "5")
        let font = demoTextView.font!
        attachment.bounds = CGRectMake(0, -4, font.lineHeight, font.lineHeight)
        let attrImageStr = NSAttributedString(attachment: attachment)
        
        //创建可变属性字符串
        let attrMutableStr = NSMutableAttributedString(attributedString: demoTextView.attributedText)
        
        //将图片属性字符串替换到可变属性字符串的某一个位置
        //获取光标所在位置
        let range = demoTextView.selectedRange
        
        //替换属性字符串
        attrMutableStr.replaceCharactersInRange(range, withAttributedString: attrImageStr)
        
        //显示属性字符串
        demoTextView.attributedText = attrMutableStr
        
        //将文字大小重置
        demoTextView.font = font
        
        //将光标设置回原来的位置
        demoTextView.selectedRange = NSRange(location: range.location + 1, length : 0)
        
        
    } 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一直以来都比较羡慕那些,界面美观,功能强大的即时通讯软件,自己慢慢摸索了好长时间,用MFC做了一个聊天程序主窗口演示小程序。 该程序主要自定义了CRichEditCtrl控件,使用XML技术与GDI处理各种图片及QQ表情组件,串行化数据等,使得程序拥有了一般聊天程序应用的特色(同时仿FeiQ程序的自动释放程序运行需要的资源到安装目录): 支持字体设置、图文、表情及各种格式图片插入、发送与保存,聊天记录的保存等等... 1、聊天输入、输出窗口:使用CRichEditCtrl控件,扩展后方便了字体设置、图文、表情及各种格式图片插入,及窗口上右键菜单的功能。 2、聊天表情:这一部分是我精心制作的,使用GDI处理各种图片使得程序支持各种格式图片的预览、插入、保存。使用XML技术,方便快捷管理表情数据。自动释放表情图片资源(程序所在目录)及QQ表情组件(放到\System32\ImageOle.dll),程序自动注册组件,让程序支持GIF格式表情的插入。程序仿FeiQ自动生成表情页面缓存图片,快捷增加大量表情。本程序生成缓存图时,使用多线程技术,增加、修改完后立即更新页面缓存图,几千张图片,马上生成完成。 3、表情管理:支持表情的添加、删除、修改,移动,导入、导出表情库等,修改完后自动删除需要更新的页面缓存图,及程序程序无关的文件等。 4、聊天记录:使用串行化数据技术,将聊天记录生成到Log.dat文件,可分页浏览记录。 本程序本人精心制件,最近一段时间在弄一个即时通讯软件,程序马上完工,完工后立即上传,由于弄程序花了不少精力,出于私心暂时不公布了。。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值