label识别text中的网址链接并做链接效果的展示,如下图
来源:互联网 发布:淘宝商城运营 编辑:程序博客网 时间:2024/05/20 05:06
识别URL的正则表达式:
((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)
可以通过分类的方式给label添加个分类, 为label新增个分类方法:.h文件
#import <UIKit/UIKit.h>
@interface UILabel (LinkUrl)
- (void)setTextWithLinkAttribute:(NSString *)text;
@end
.m文件
#import "UILabel+LinkUrl.h"
@implementation UILabel (LinkUrl)
- (void)setTextWithLinkAttribute:(NSString *)text {
self.attributedText = [selfsubStr:text];
}
-(NSMutableAttributedString*)subStr:(NSString *)string
{
NSError *error;
//可以识别url的正则表达式
NSString *regulaStr =@"((http[s]{0,1}|ftp)://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)|(www.[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?)";
NSRegularExpression *regex = [NSRegularExpressionregularExpressionWithPattern:regulaStr
options:NSRegularExpressionCaseInsensitive
error:&error];
NSArray *arrayOfAllMatches = [regexmatchesInString:string options:0range:NSMakeRange(0, [stringlength])];
NSMutableArray *arr=[[NSMutableArrayalloc]init];
NSMutableArray *rangeArr=[[NSMutableArrayalloc]init];
for (NSTextCheckingResult *matchin arrayOfAllMatches)
{
NSString* substringForMatch;
substringForMatch = [string substringWithRange:match.range];
[arr addObject:substringForMatch];
}
NSString *subStr=string;
for (NSString *strin arr) {
[rangeArr addObject:[selfrangesOfString:str inString:subStr]];
}
UIFont *font = [UIFontsystemFontOfSize:20];
NSMutableAttributedString *attributedText;
attributedText=[[NSMutableAttributedStringalloc]initWithString:subStrattributes:@{NSFontAttributeName :font}];
for(NSValue *valuein rangeArr)
{
NSInteger index=[rangeArrindexOfObject:value];
NSRange range=[valuerangeValue];
[attributedText addAttribute:NSLinkAttributeNamevalue:[NSURLURLWithString:[arr objectAtIndex:index]]range:range];
[attributedText addAttribute:NSForegroundColorAttributeNamevalue:[UIColorblueColor] range:range];
}
return attributedText;
}
//获取查找字符串在母串中的NSRange
- (NSValue *)rangesOfString:(NSString *)searchString inString:(NSString *)str {
NSRange searchRange =NSMakeRange(0, [strlength]);
NSRange range;
if ((range = [strrangeOfString:searchString options:0range:searchRange]).location !=NSNotFound) {
searchRange = NSMakeRange(NSMaxRange(range), [strlength] - NSMaxRange(range));
}
return [NSValuevalueWithRange:range];
}
@end
在你创建label的地方调用这个新增方法:
UILabel *label=[[UILabelalloc]initWithFrame:CGRectMake(18,100, CGRectGetWidth(self.view.frame) - 36, 100)];
label.numberOfLines =0;
[label setTextWithLinkAttribute:@"谷歌搜索好用http://www.google.com搜索用什么https://www.baidu.com百度一下你知道"];
[self.viewaddSubview:label];
效果实现!- label识别text中的网址链接并做链接效果的展示,如下图
- android---Text中电话号码、网址自动链接
- 网址的链接
- 网址链接
- 链接网址
- 网址链接
- 网址链接
- 使用GridView组件实现如下图所示的效果
- 使用GridView组件实现如下图所示的效果
- 使用GridView组件实现如下图所示的效果
- 一个为字符串中的网址加上链接的程序例子
- 为字符串中的网址加上链接的程序例子
- word2010文档中的网址链接显示的是乱码
- 在Textview中获取指定文字位置(兼顾网址链接和emoji表情),并在其附近展示图片
- 有用的链接与网址
- 记录优秀的网址链接
- 几个有用的链接网址
- app网址链接的生成
- jquery validate让普通按钮触发表单验证
- [JS] TypeError: dbg is undefined 错误的解决方法
- 项目里面访问AppDelegate做全局变量的方式
- 【2017秋季校园招聘笔经面经专题汇总】持续更新中
- linux 命令 cp -a
- label识别text中的网址链接并做链接效果的展示,如下图
- 端口映射和DMZ的区别
- 搜索数字
- 【学习】数据离散化
- ,这样指定的class是同级的。同级的class需要看CSS文件的先后次序,后加载的css会覆盖前面加载的css。写到style的话因为是最后解析的所以是最高的一个优先级。
- 谈谈互联网后端基础设施
- 分数类运算
- 闲来开始一些安卓开发的总结
- 缓和曲线01概论