IOS图文混排

  我们从新浪微博拉回来的文本数据往往是包含有表情的,但表情是以[嘻嘻][哈哈]的形式返回。我们在显示的时候就必须要想办法把这些表情显示回来,实现图文混排。

  基本上可以从网上找到几种方案。比如说转换成html再用webview显示,但这样据说会因为webview加载耗时导致滑TableView时的闪烁。或者猥琐的使用UILabel+UIImage实现。那本文推崇的是使用DrawRect方法,一个UIView的子类可以继承此方法进行自定义绘制试图。有两个很好用的函数:

  [string drawInRectwithFont:];   //在一矩形中绘制该string

  [image drawInRect:];    //在一矩形中绘制该image

  一,解析文本。

  第一步要先对原文本进行解析,使其分割成一段文字,一段表情文本。比如 “你好,我是小明[哈哈]!请多多指教!” 这段文本就要先被砍成 ”你好,我是小明“ ,”[哈哈]","!请多多指教!“这三段,并保存在一个数组中,待接下来绘制用。

  那如何解析呢?用正则当然可以,但也可以玩一些字符游戏。

  比如[string rangeOfString:@"["],就可以知道符号[出现在string中的哪个位置。

  再善用NSString的 substringWithRange(range中间的串,不包括边界) ,substringToIndex(index前的串,不包括index),substringFromIndex(包括index)就可以完成分割啦。

  二,绘制。

  绘制的时候就使用开篇时讲的那两个方法,对上一步得到的数组一个个绘制。

  要注意的地方是跟踪当前绘制的光标坐标(x,y),即当前绘制的小矩形的origine。这个工作就是手动控制好换行啦!

  文本段是一个一个字进行drawInRect的。

  

  

posted @ 2013-03-19 15:57  Play小榆  阅读(788)  评论(0)    收藏  举报