公司动态
如何用 STTweetLabel 定制样式:为 话题、@用户和链接设置专属颜色与字体
如何用 STTweetLabel 定制样式为 #话题、用户和链接设置专属颜色与字体【免费下载链接】STTweetLabelDeprecated - A UILabel with #hashtag handle and links tappable项目地址: https://gitcode.com/gh_mirrors/st/STTweetLabelSTTweetLabel 是一个基于 UILabel 的 iOS 开源文本标签组件它能够自动识别文本中的#话题标签、用户提及和 URL 链接并让它们变成可点击的热词。更强大的是你可以通过简单的 API 为这三类热词分别定制专属的颜色与字体让文字样式与你的 App 设计风格完美统一。虽然该项目已标记为 Deprecated不再维护但它的源码简洁、API 清晰至今仍是 iOS 新手学习文本样式定制与正则识别的绝佳范例。STTweetLabel 是什么为什么值得一试STTweetLabel 的本质是一个UILabel 增强控件与系统自带 UILabel 用法几乎一致却额外拥有三项能力✅ 自动识别文本中的用户、#话题和链接无需手动拆分字符串✅ 三种热词可分别设置颜色与字体视觉层次一目了然✅ 通过detectionBlock回调捕获点击事件轻松实现跳转、弹窗等交互它基于 iOS 7 的 TextKit 框架实现核心代码只有 STTweetLabel.h 与 STTweetLabel.m 两个文件非常适合通读学习。最快配置方法CocoaPods 一键安装如果你使用 CocoaPods 管理依赖在 Podfile 中添加一行即可pod STTweetLabel然后执行pod install并在需要使用的文件中导入头文件#import STTweetLabel.h若想直接运行官方示例工程可以 clone 整个仓库查看 Demogit clone https://gitcode.com/gh_mirrors/st/STTweetLabel其中示例代码位于 STViewController.m运行后即可看到话题、用户与链接三种样式同时展示的效果。三行代码快速上手让文本自动可点击STTweetLabel 的使用方式和 UILabel 几乎一模一样只需创建实例并设置textSTTweetLabel *tweetLabel [[STTweetLabel alloc] initWithFrame:CGRectMake(10, 60, 300, 160)]; tweetLabel.text 欢迎 小美 加入团队今天聊聊 #iOS开发 和 #开源项目详情见 https://example.com/guide; [self.view addSubview:tweetLabel];此时小美、#iOS开发、链接 URL 会被自动识别并渲染成各自的默认样式无需编写任何解析代码。定制样式核心setAttributes 方法详解定制样式是 STTweetLabel 最实用的功能它提供两个方法分别控制全局文字和特定热词的外观。了解三种热词类型在动手定制之前先认识 STTweetLabel.h 中定义的枚举枚举值含义默认颜色STTweetHandle用户红色STTweetHashtag#话题浅灰色STTweetLink链接淡蓝色设置全局文字样式使用setAttributes:可以统一设置普通文本的字体与颜色[tweetLabel setAttributes:{ NSFontAttributeName: [UIFont systemFontOfSize:16.0], NSForegroundColorAttributeName: [UIColor darkGrayColor] }];为话题、用户和链接分别定制专属颜色与字体使用setAttributes:hotWord:可以针对某一类热词单独设置样式这是本教程的核心操作// 为 #话题 设置醒目的蓝色加粗 [tweetLabel setAttributes:{ NSForegroundColorAttributeName: [UIColor colorWithRed:0.0 green:0.48 blue:1.0 alpha:1.0], NSFontAttributeName: [UIFont boldSystemFontOfSize:16.0] } hotWord:STTweetHashtag]; // 为 用户 设置橙色专属色 [tweetLabel setAttributes:{ NSForegroundColorAttributeName: [UIColor orangeColor], NSFontAttributeName: [UIFont systemFontOfSize:16.0] } hotWord:STTweetHandle]; // 为链接设置紫色 [tweetLabel setAttributes:{ NSForegroundColorAttributeName: [UIColor purpleColor] } hotWord:STTweetLink];两点温馨提示未指定的属性如字体会自动沿用标签默认值无需全部填写这两个方法会刷新整个组件建议在初始化阶段一次性设置好样式避免重复刷新造成性能开销捕获点击事件detectionBlock 回调光有样式还不够让热词真正可点击需要实现detectionBlock。回调会返回点击的热词类型、文本内容、协议和范围[tweetLabel setDetectionBlock:^(STTweetHotWord hotWord, NSString *string, NSString *protocol, NSRange range) { if (hotWord STTweetLink) { NSLog(点击链接%协议%, string, protocol); } else if (hotWord STTweetHashtag) { NSLog(点击话题%, string); } else if (hotWord STTweetHandle) { NSLog(点击用户%, string); } }];配合这个回调你可以实现跳转浏览器、打开话题详情页等交互这也是 STTweetLabel 最典型的应用场景。更多实用配置协议白名单、文字选择与 RTL 支持除了样式与点击STTweetLabel 还提供了几个贴心的开关属性validProtocols链接协议白名单默认只识别http和https可自行扩展textSelectable是否允许用户选择文本并复制默认开启selectionColor文本选中时的背景高亮色leftToRight书写方向支持阿拉伯语等 RTL从右到左语言textAlignment文本对齐方式与 UILabel 一致例如限制只识别https链接tweetLabel.validProtocols [https];自动计算高度的实用方法当文本内容不确定时可以用内置方法计算完整展示所需的尺寸避免文字被截断CGSize size [tweetLabel suggestedFrameSizeToFitEntireStringConstrainedToWidth:300.0]; tweetLabel.frame CGRectMake(10, 60, size.width, size.height);这个方法会返回恰好容纳全部内容的大小配合 Auto Layout 使用非常顺手。常见问题与小技巧样式不生效请确认setAttributes:hotWord:在设置text之后调用且不要在运行时频繁修改想修改默认协议通过validProtocols属性即可无需改动源码项目已 Deprecated不影响学习使用源码逻辑在 STTweetLabel.m 中完整保留是理解 TextKit 富文本渲染的优秀教材掌握以上方法后你就能用 STTweetLabel 轻松打造出层次分明、风格统一的文本标签界面了。如果你正在寻找一款轻量级、可定制的 iOS 话题标签组件不妨在示例工程中动手试一试吧【免费下载链接】STTweetLabelDeprecated - A UILabel with #hashtag handle and links tappable项目地址: https://gitcode.com/gh_mirrors/st/STTweetLabel创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考