iOS 像微博中可以点击连接、#text#、@somebody是如何做的,该怎样实现?
PHP中文网
PHP中文网 2017-04-17 11:38:38
[iOS讨论组]

微博客户端中

  1. 连接
  2. #text#
  3. @somebody

是怎样实现的?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(5)
高洛峰

通过 CoreText 实现(推荐):

  1. 用正则解析纯文本生成 NSAttributedString
  2. 使用 CoreText 绘制到 CGContext 上;
  3. 点击时,通过 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 ,因为这会造成很严重的性能问题。
大家讲道理

有现成的open source:TTTAttributedLabel
https://github.com/mattt/TTTAttribute...

PHP中文网

通常是嵌web页来实现

PHPz

你可以做字符串解析,符合某种格式就输出为想要的形式,比如你要@某人,就分析,如果某段字符串满足“@用户名(用户id)”那么你就把这段字符串处理成超链接。

巴扎黑

解析可以用Twitter的开源库 Twitter Text,有各种语言的port:https://github.com/twitter/twitter-te...,显示方面可以用CoreText去做,可以自己实现或者用DTCoreText或TTTAttributedLabel之类的库

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号