iOS gif表情图文混排

作者: 萌小菜 | 来源:发表于2016-01-01 15:37 被阅读2601次

效果如下:

Untitled0.gif

关于图文混排大家应该都非常熟悉了, iOS7之前是用CoreText实现, 用CoreText比较麻烦, 所以一般都用封装好的第三方来实现图文混排。苹果在iOS7新加'NSTextAttachment'这个类, 使在文本中添加图片非常简单,所以现在来实现文本与变通图片的混排比较简单了。但是到目前NSTextAttachment还不支持gif图片,我认为苹果应该是不建议在文本中加入动态图片, 因为显示太多的动态图片无论是对于性能还是内存消耗都比较多,从性能和用户体验考虑还是应该少用或者不用动态图片。
前几天在网上找了下动态表情的图文混排, 但是基本上没有找到成功实现gif图片图文混排的demo或者第三方, 但是QQ还有其它一些应用都已经实现了这个功能, 所以这个功能是一定能实现的,只是现在做这个需求还不是很多吧。网上找不到只能自己看文档来实现,但是苹果没有直接提供可以支持动态图片与文字混排的类或者方法,只是自己再想思路。最后也是实现了功能, 不过对于性能优化还没有太多考虑,希望各位兄弟能给我看看怎么优化下性能。

大体思路:

1> 利用正则匹配出图片名字,并将其用NSTextAttachment对象进行替换,并设置NSTextAttachment的bounds(这里的NSTextAttachment对象作用是占位和标记)
2> 设置TextView或者Label的attributedText,然后遍历attributedText找出刚才添加进去的NSTextAttachment,并在相应的NSTextAttachment上面添加相应的动态图片,搞定。。。


2017.02.15 更新 :
评论中有兄弟说在cell中使用会有问题,今天我写了个在tableView中使用的demo,具体请参考下面链接。

demo地址: 点击查看

相关文章

网友评论

  • 97fcf6e27892:没办法用Label实现啊
    萌小菜:已经更新可以使用UILable了
    萌小菜:@爱一直在路上 我没找到办法,你找到了告诉我下
  • return以诺:大哥啊,你富文本那处理代码换了, 看懵逼了,留个qq交流下吧
  • cc392aa898c7:感谢您的分享!
    萌小菜:@美云 一起学习 :smiley:
  • 令__狐冲:代码有些问题,正则表达式筛选出的字符串可能是包含表情的,这个时候应该再次进行一次筛选,以确保正则出的就是表情字符串。
    萌小菜:@令__狐冲 /[\u4e00-\u9fa5]{2,4} 前面有‘/’ 后面跟汉字, 不会出现你说的那种情况
  • 令__狐冲:可以用labelz做吗?
  • cf8821d13bcb:你好,放到TableViewCell上,滚动后GIF图片会消失的,请问下是什么问题呢。
    萌小菜:@return以诺 应该是cell重用的问题吧,需要手动处理呀
    return以诺:@萌小菜 我也是滚动cell消失了,能解决吗?
    萌小菜:@ChloeGraceMoret 是滚出屏幕后再滚回来消失 还是一滚动就消失呀?
  • 2fe5f9f8bb46:用UITextField是不是做不了?
    萌小菜:@2fe5f9f8bb46 应该也可以
  • David_Cap:好厉害,大神哥哥 有没有什么读书推荐啊。明年我想提高一下iOS水平啊。
    萌小菜:@David_Cap 我也是一只小菜鸡 :smile: 我就买过一本swift的书,买来就没看过,多看看博客自己写点东西就可以我感觉
  • 萌小菜:欢迎评论 提出意见

本文标题:iOS gif表情图文混排

本文链接:https://www.haomeiwen.com/subject/cqkwhttx.html