iOS富文本终极指南:如何用YYText实现完美的展开收起功能
YYText是iOS平台上功能强大的富文本框架,专门用于显示和编辑富文本内容。其中行数限制和展开收起功能是开发者在处理长文本时最常用的特性之一。通过简单的配置,你就能让文本在指定行数后自动截断,并支持用户点击展开查看完整内容。🚀
YYText行数限制的核心属性
YYLabel提供了几个关键属性来控制文本的行数显示:
- numberOfLines:设置最大显示行数,0表示无限制
- lineBreakMode:指定文本截断方式
- truncationToken:自定义截断标记,如"查看更多"
这些属性在YYLabel.h中定义,可以轻松实现文本的截断和展开效果。
实现展开收起功能的完整步骤
1️⃣ 基础配置:设置行数限制
首先创建一个YYLabel并设置最大行数,当文本超过指定行数时会自动截断:
YYLabel *label = [YYLabel new];
label.numberOfLines = 3; // 限制显示3行
label.lineBreakMode = NSLineBreakByTruncatingTail;
2️⃣ 高级定制:自定义截断标记
你可以使用自定义的"查看更多"按钮作为截断标记:
NSMutableAttributedString *moreText = [[NSMutableAttributedString alloc] initWithString:@"... 展开"];
[moreText yy_setColor:[UIColor blueColor] range:NSMakeRange(0, moreText.length)];
label.truncationToken = moreText;
3️⃣ 交互实现:处理点击事件
通过设置点击事件来切换展开收起状态:
label.textTapAction = ^(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect) {
// 在这里切换展开收起状态
};
YYText展开收起的高级技巧
动态行高调整
使用linePositionModifier可以精确控制每一行的位置和高度,这在处理复杂文本布局时特别有用。
异步渲染优化
对于长文本内容,开启异步渲染可以避免界面卡顿:
label.displaysAsynchronously = YES;
实际应用场景
社交媒体应用:朋友圈、微博等平台的文本内容展示 新闻阅读应用:文章摘要和完整内容的切换 电商应用:商品描述的展开收起
性能优化建议
- 合理设置numberOfLines:避免设置过大的值影响性能
- 使用textLayout:对于复杂布局,直接使用textLayout属性
- 启用异步显示:在需要高性能的场景下使用
总结
YYText的行数限制功能为iOS开发者提供了强大而灵活的文本展示方案。通过简单的属性配置和事件处理,你就能实现用户友好的展开收起交互。无论是简单的文本截断还是复杂的富文本展示,YYText都能胜任。✨
通过YYTextLayout和YYLabel的完美配合,你的应用将拥有更加流畅和专业的文本展示体验。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



