STTweetLabel 快速上手:5 分钟让 UILabel 中的 @提及、#话题标签和链接可点击
【免费下载链接】STTweetLabelDeprecated - A UILabel with #hashtag @handle and links tappable项目地址: https://gitcode.com/gh_mirrors/st/STTweetLabel
STTweetLabel 是一个基于 TextKit 的 iOS 开源组件,它把普通 UILabel 升级为支持 @提及、#话题标签和链接点击识别的智能标签,效果与 Twitter 客户端如出一辙。它由 Sebastien Thiebaud 开发,设计轻巧、API 简洁,即使官方已宣布项目废弃(Deprecated),其实现思路依然是学习自定义 UILabel 与富文本点击交互的绝佳教材。
STTweetLabel 是什么?一个会"认字"的 UILabel
传统 UILabel 只能展示纯文本,用户看到 "@某人"、"#话题" 或网址时,只能复制后手动跳转。STTweetLabel 通过正则表达式 + TextKit 排版引擎,自动识别文本中的三类"热词"(HotWord):
- @提及(Handle):如
@SebThiebaud - #话题标签(Hashtag):如
#iOS7 - 链接(Link):如
https://t.co/pQXDoiYA
识别后自动着色高亮,并支持点击回调,一条代码即可完成从"展示"到"交互"的升级。
STTweetLabel 核心功能一览
- ✅ 自动识别并高亮 @提及、#话题标签、链接
- ✅ 点击事件回调,返回热词类型、文本、协议与位置
- ✅ 支持文本选中与复制(
textSelectable属性控制) - ✅ 支持 RTL 从右到左书写方向(
leftToRight属性) - ✅ 基于 TextKit,自动换行、富文本排版稳定可靠
STTweetLabel 快速安装方法(CocoaPods 一键集成)
STTweetLabel 支持 CocoaPods 安装,在 Podfile 中添加一行即可:
pod 'STTweetLabel', '~> 3.1.21'然后执行pod install。注意:3.0 之后版本基于 TextKit,仅兼容iOS 7 及以上系统。安装后引入头文件#import "STTweetLabel.h"即可使用,源码位于STTweetLabel/STTweetLabel.h与STTweetLabel/STTweetLabel.m。
让 UILabel 中的链接可点击:三步完成
第一步:创建实例并设置文本。用法与 UILabel 几乎一致,用initWithFrame:创建,直接setText:写入包含 @、# 和链接的字符串:
STTweetLabel *tweetLabel = [[STTweetLabel alloc] initWithFrame:CGRectMake(10.0, 60.0, 300.0, 160.0)]; [tweetLabel setText:@"Hi. This is a new tool for @you! Developed by @SebThiebaud for #iPhone #ObjC... and #iOS7 ;-) My GitHub page: https://t.co/pQXDoiYA"]; [self.view addSubview:tweetLabel];第二步:实现点击回调。不写detectionBlock,点击事件将不会被捕获。回调中会返回热词类型、命中的字符串、链接协议(如http)以及文本中的位置范围:
[tweetLabel setDetectionBlock:^(STTweetHotWord hotWord, NSString *string, NSString *protocol, NSRange range) { // hotWord 区分 @提及 / #话题 / 链接,按需处理跳转逻辑 }];第三步:运行验证。示例工程STTweetLabelExample/STTweetLabelExample/STViewController.m中展示了完整写法,底部会实时显示点击命中的热词类型、位置与协议。
常用属性定制:打造你的专属样式
STTweetLabel 提供了丰富的可配置属性:
text:显示文本,支持多行自动换行validProtocols:合法的链接协议数组,默认@[@"http", @"https"]textSelectable:是否允许选中文本(默认YES)selectionColor:文本选中时的背景色leftToRight:书写方向,支持阿拉伯语等 RTL 场景textAlignment:文本对齐方式
样式定制则通过setAttributes:系列方法完成,可为全文、或单独为 @提及、#话题、链接设置字体与颜色,例如让 @提及显示红色、链接显示蓝色,形成清晰的视觉层级。
注意事项与学习价值
- ⚠️ 项目已标记为Deprecated(废弃),官方不再维护,建议仅用于学习或历史项目维护
- 若想亲自体验效果,可通过
git clone https://gitcode.com/gh_mirrors/st/STTweetLabel获取代码,用 Xcode 打开STTweetLabelExample.xcodeproj直接运行 Demo - 想深入了解识别与高亮实现,可重点阅读
STTweetLabel/STTweetLabel.m中的determineHotWords与正则匹配逻辑,对理解 TextKit 富文本交互非常有帮助
总而言之,STTweetLabel 用极少的代码解决了 UILabel 富文本点击识别的经典痛点,如果你正在学习 iOS 文本交互或需要快速实现 Twitter 风格的标签高亮,它依然是值得参考的开源范例。
【免费下载链接】STTweetLabelDeprecated - A UILabel with #hashtag @handle and links tappable项目地址: https://gitcode.com/gh_mirrors/st/STTweetLabel
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考