使用YYText-文本蓝色文字点击实现超链接跳转
2016-07-31 11:16
3107 查看
我们经常在注册账号的时候会看到相关的我们注册该账号要遵循的某个协议,一般是蓝色文字标记出来。比如这样:
对于这种可以拼接Label,添加一个手势,也可以放置Button来实现,但是有时候总感觉不是很好,我认为它应该是一个整体,我们只是对文本中某段文字进行了处理而已,所以基于这个初衷,也有了今天要说的这个事儿。也许我们会碰到这样的需求:
文本中两处文字都被颜色标记出来了,在实际业务中我们假想这就是两个注册账号时要遵循的协议,都是可以点击跳转到具体协议内容的,那么在这里放置控件来拼接,似乎就不行了。
好吧,言归正传,直接说我们今天要做的事吧。
YYText是YYKit开源库中的一个关于富文本的库,里面对于富文本编辑、排版做了相当多的更适合我们便捷使用的处理,详情可以去github上下载demo学习,这里我就学习使用了这个关于标记文字点击处理的东西。
下载并导入该库,在要使用的vc中引入头文件:
#import "YYText.h"
具体代码请看:
接下来对文本进行展示,这里注意YYLabel并不是继承自UILabel,而是UIView:
不出意外的话运行应该就是我们上图那种效果了,点击事件效果:
此外,有一个小问题待解决,我输出的时候是直接传入的文字大小,我试过在block中获取返回的text的UIFont,在代码片中:
[text yy_fontAtIndex:otherRange.location]
是可以获取一个UICTFont:
这里返回的是一个UIFont,并不是dic,so, 我不知道怎么从中"font-size"获取这段文本的字体大小,如果您知道,请您赐教。
对于这种可以拼接Label,添加一个手势,也可以放置Button来实现,但是有时候总感觉不是很好,我认为它应该是一个整体,我们只是对文本中某段文字进行了处理而已,所以基于这个初衷,也有了今天要说的这个事儿。也许我们会碰到这样的需求:
文本中两处文字都被颜色标记出来了,在实际业务中我们假想这就是两个注册账号时要遵循的协议,都是可以点击跳转到具体协议内容的,那么在这里放置控件来拼接,似乎就不行了。
好吧,言归正传,直接说我们今天要做的事吧。
YYText是YYKit开源库中的一个关于富文本的库,里面对于富文本编辑、排版做了相当多的更适合我们便捷使用的处理,详情可以去github上下载demo学习,这里我就学习使用了这个关于标记文字点击处理的东西。
下载并导入该库,在要使用的vc中引入头文件:
#import "YYText.h"
具体代码请看:
NSString *text = @"唐寅,生于成化六年二月初四,卒于嘉靖二年十二月二日,字伯虎,后改字子畏,号六如居士、桃花庵主、鲁国唐生、逃禅仙吏等,明代画家、书法家、诗人。"; NSMutableAttributedString *one = [[NSMutableAttributedString alloc] initWithString: text]; /** * 设置整段文本size */ // one.yy_font = [UIFont boldSystemFontOfSize:30]; /** * 设置整段文本下划线 */ // one.yy_underlineStyle = NSUnderlineStyleSingle; /** * 获得range, 只设置标记文字的size、下划线 */ NSRange range = [text rangeOfString:@"字伯虎"]; [one yy_setTextUnderline:[YYTextDecoration decorationWithStyle:YYTextLineStyleSingle] range:range]; [one yy_setFont:[UIFont boldSystemFontOfSize:30] 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]; /** * 标记文字点击事件 */ [one yy_setTextHighlightRange:range color:textColor backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { // 点击就是跳转超链接了,在这里我输出标记文字 [self showMessage:[NSString stringWithFormat:@"%@, 字体大小: 30", [text.string substringWithRange:range]]]; }]; // 再标记一段文字 NSRange otherRange = [text rangeOfString:@"桃花庵主"]; [one yy_setFont:[UIFont boldSystemFontOfSize:20] range:otherRange]; [one yy_setTextHighlightRange:otherRange color:[UIColor orangeColor] backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) { [self showMessage:[NSString stringWithFormat:@"%@, 字体大小: 20", [text.string substringWithRange:otherRange]]]; NSLog(@"dic: %@", [text yy_fontAtIndex:otherRange.location]); }];
接下来对文本进行展示,这里注意YYLabel并不是继承自UILabel,而是UIView:
YYLabel *label = [[YYLabel alloc] init]; label.attributedText = one; label.frame = CGRectMake(20, 200, self.view.frame.size.width-40, 200); label.textAlignment = NSTextAlignmentCenter; label.textVerticalAlignment = YYTextVerticalAlignmentCenter; label.numberOfLines = 0; label.backgroundColor = [UIColor colorWithWhite:0.933 alpha:1.000]; [self.view addSubview:label];
不出意外的话运行应该就是我们上图那种效果了,点击事件效果:
此外,有一个小问题待解决,我输出的时候是直接传入的文字大小,我试过在block中获取返回的text的UIFont,在代码片中:
[text yy_fontAtIndex:otherRange.location]
是可以获取一个UICTFont:
这里返回的是一个UIFont,并不是dic,so, 我不知道怎么从中"font-size"获取这段文本的字体大小,如果您知道,请您赐教。
相关文章推荐
- android html超链接文本 点击跳转的两种实现
- android 同意协议、服务等,一行文字中掺杂关于其他颜色字体。同时实现超链接点击跳转等功能.
- 超简单实现TextView中某段文字超链接点击打开浏览器跳转到网页
- TextView 部分文字高亮、点击、添加超链接、替换字体、富文本、图片替换文字等实现
- Android应用实例之---使用Linkify + 正则式区分微博文本链接及跳转处理如同新浪微博Android版的应用上,当我们点击微博文本上的链接会自动跳转界面,或网站链接跳转网页浏览,或邮箱链接
- jQuery实现文本域内提示文字,当鼠标点击进文本域后自动消失,文本域失去鼠标焦点后显示提示文字或显示用户输入的文字。
- 使用Jquery实现点击文字后变成文本框且可修改
- SpannableString中的LinkMovementMethod和ClickableSpan的实现安卓可点击有颜色文字使用
- Android TextView中文本点击文字跳转 (代码简单)
- 浅谈ClickableSpan , 实现TextView文本某一部分文字的点击响应
- android中实现文字的超链接的应用内跳转
- Android TextView中实现点击文本超链接(无下划线)的封装类
- Android 点击文字实现跳转
- 不使用js实现点击文字选中radio
- Android TextView 显示富文本、图片、点击文字跳转自定义界面
- Android的webView 实现点击超链接跳转,后退,前进 ,刷新
- 使用ClickableSpan轻松实现一段文本中的多个点击事件
- TTTAttributedLabel 使用方法 (可点击文字文本)
- 使用Jquery实现点击文字变成输入框、点击按钮刷新网页