微博客户端中
- 连接
- #text#
- @somebody
是怎样实现的?
通常是嵌web页来实现
通过 CoreText 实现(推荐):
- 用正则解析纯文本生成
NSAttributedString
; - 使用
CoreText
绘制到CGContext
上; - 点击时,通过
UIResponder
取到点击事件,并通过CoreText
API找到点击的具体文字,修改这部分的NSMutableAttributedString
(的颜色),并用CoreText
重新绘制。
相关文档 http://developer.apple.com/library/ios/#documentation/StringsTextFonts/Conceptual/CoreText_Programming/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005533
通过UIWebView实现:
UIWebView
可以直接显示一个网页,添加类似的链接很简单;- 可以在
UIWebView
的 delegate 方法中对点击的链接进行分析,执行相应的操作; - 通常 不会 在
UITableView
中使用UIWebView
,因为这会造成很严重的性能问题。
解析可以用Twitter的开源库 Twitter Text,有各种语言的port:https://github.com/twitter/twitter-te...,显示方面可以用CoreText去做,可以自己实现或者用DTCoreText或TTTAttributedLabel之类的库
你可以做字符串解析,符合某种格式就输出为想要的形式,比如你要@某人,就分析,如果某段字符串满足“@用户名(用户id)”那么你就把这段字符串处理成超链接。
有现成的open source:TTTAttributedLabel
https://github.com/mattt/TTTAttribute...