NSString *text = @"为您推荐了**医生,三甲全科教授医生,查看医生介绍。";
NSMutableAttributedString *one = [[NSMutableAttributedString alloc] initWithString: text];
/**
* 设置整段文本size
*/
one.yy_font = [UIFont systemFontOfSize:15];
/**
* 获得range, 只设置标记文字的size、下划线
*/
NSRangerange = [textrangeOfString:@"**"];
[oneyy_setTextUnderline:[YYTextDecoration decorationWithStyle:YYTextLineStyleSingle] range:range];
[oneyy_setFont:[UIFontsystemFontOfSize:15]range:range];
/**
* 被标记的文字颜色
*/
UIColor *textColor = [UIColor colorWithRed:0.093 green:0.492 blue:1.000 alpha:1.000];
/**
* 被标记文字点中后的背景颜色,会闪现一下
*/
// UIColor *tapedBackgroundColor = [UIColor colorWithWhite:0.000 alpha:0.220];
/**
* 标记文字点击事件
*/
[oneyy_setTextHighlightRange:rangecolor:textColorbackgroundColor:niltapAction:^(UIView*_NonnullcontainerView,NSAttributedString*_Nonnulltext,NSRangerange,CGRectrect) {
NSLog(@"高亮1");
// 点击就是跳转超链接了,在这里我输出标记文字
// [self showMessage:[NSString stringWithFormat:@"%@, 字体大小: 30", [text.string substringWithRange:range]]];
}];
// 再标记一段文字
NSRangeotherRange = [textrangeOfString:@"查看医生介绍"];
[oneyy_setFont:[UIFontsystemFontOfSize:15]range:otherRange];
[oneyy_setTextHighlightRange:otherRangecolor:textColorbackgroundColor:niltapAction:^(UIView*_NonnullcontainerView,NSAttributedString*_Nonnulltext,NSRangerange,CGRectrect) {
// [self showMessage:[NSString stringWithFormat:@"%@, 字体大小: 20", [text.string substringWithRange:otherRange]]];
NSLog(@"dic: %@", [textyy_fontAtIndex:otherRange.location]);
}];
self.chatLb.attributedText = one;
}
- (YYLabel*)chatLb {
if(!_chatLb) {
_chatLb= [[YYLabelalloc]init];
_chatLb.font = [UIFont systemFontOfSize:15];
_chatLb.textAlignment = NSTextAlignmentCenter;
_chatLb.textVerticalAlignment = YYTextVerticalAlignmentCenter;
_chatLb.numberOfLines = 0;
_chatLb.text = @"就诊信息已提交,这是您的就诊信息";
[_chatLb becomeFirstResponder];
}
return _chatLb;
}
注意,如果你的YYLabel是加载在UIView或者UIimageView这些控件上,是不会触发点击效果的,因为父视图本身就不接受交互,你得先打开父视图的交互
图一里面,我是放在气泡里面的,由于气泡就是用UIImageView做的,所以不接受用户交互,玩命点击都没触发高亮字体的点击效果,这是一个坑,注意注意.