• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

【Swift】图文混排,ios开发中在textfield或textView中插入图片

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

在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

     

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
swift监听键盘弹出的高度发布时间:2022-07-13
下一篇:
openstack-swift云存储部署(二)发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap