在我的项目中YYText用于实现富文本的点击响应,例如点击话题文本执行对应的响应逻辑。简单记录以备不虞。
需要注意的点
·普通文本用YYText设置为富文本,YYLabel只需要将设置好的富文本赋值,做展示用。而非设置label的text属性,否则使用yylabel和uilabel是一样的。
·要实现点击效果,赋值富文本代码一定要写在点击响应回调的后面,否则没有点击效果。
简单的代码实现
NSMutableAttributedString *text = [[NSMutableAttributedString alloc] initWithString:@"llalalalallaalal#This is a topic#"];
[text yy_setFont:[UIFont systemFontOfSize:15.0f] range:text.yy_rangeOfAll];
[text yy_setColor:[UIColor blackColor] range:text.yy_rangeOfAll];
[text yy_setAlignment:NSTextAlignmentLeft range:text.yy_rangeOfAll];
NSRange range1 = [[text string] rangeOfString:@"#This is a topic#" options:NSCaseInsensitiveSearch];
//在使用创建NSRange时不要用***
[text yy_setColor:[UIColor blueColor] range:range1];
[text yy_setTextHighlightRange:range1 color:[UIColor blueColor] backgroundColor:[UIColor grayColor] tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
NSLog(@"taped the topic");
}];
_yLabel = [YYLabel new];
//自动换行
_yLabel.numberOfLines = 0;
//自适应高度
_yLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.view.frame) - 30;
[self.view addSubview:_yLabel];
_yLabel.numberOfLines = 0;
_yLabel.attributedText = text;
可以通过属性文本来设置yylabel的例如对齐方式、字体、颜色等属性。
PS:稍作了解发现YYKit真的是非常优秀的源码,值得深入学习,也同时要像作者大神学习。