Need help with MYCoreTextLabel?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

coderMyy
197 Stars 43 Forks 68 Commits 10 Opened issues

Description

图文混排 , 实现图片文字混排 , 可显示常规链接比如网址,@,#话题#,手机号 , 邮箱号等 , 可以自定义链接字,设置关键字高亮等功能 . 适用于微博,微信,IM聊天对话等场景 . 实现这些功能仅用了几百行代码,耦合性也较低

Services available

!
?

Need anything else?

Contributors list

# 118,337
Swift
Objecti...
iOS
tcp-soc...
15 commits

MYCoreTextLabel

图文混排 , 实现图片文字混排 , 可显示常规链接比如网址,@,#话题# , 手机号 , 邮箱号等 , 可以自定义链接字,设置关键字高亮等功能 . 适用于微博,微信,IM聊天对话等场景 . 例如 :

  1. 朋友圈发布内容的表情文字混排 , 网址等链接可点击 , xxx回复了xxx .
  2. xxxx发送验证 , "发送验证"可点击 .
  3. 搜索内容 , 搜索结果关键字高亮 等等 .


最新更新日期 : 2017 . 6 . 22 对整个结构进行调整 , 使用更灵活 , 自定义程度更高 . 需要什么样的链接就匹配该链接 , 提高了执行效率 .

聊天气泡效果 , 请参照 https://github.com/coderMyy/CocoaAsyncSocket_Demo

补充 : 关于表情和文字混排时间距问题 , 有朋友提出不能设置间距 , 出现了紧挨着的效果 . 对此 , 此label中只有设置文字间距的属性,并没有设置图片和文字之间间距的属性 . 我个人公司的项目 , 是UI在切表情图的时候 , 已经加上了间距 . 可以解决该问题 . 代码中设置 , 后面会补充上去

1. 静态图文文字混排

    _coretextLabel = [[MYCoreTextLabel alloc]init];
    _coretextLabel.delegate = self;

_coreTextLabel.imageSize = CGSizeMake(25, 25);  // 设置图片尺寸 , 默认和字体一样

//设置普通文本属性
_coreTextLabel.textFont  = [UIFont systemFontOfSize:16.f]; //设置普通文本大小 , 默认14.f
_coreTextLabel.textColor = [UIColor brownColor]; //设置普通文本字体颜色 , 默认黑色
_coreTextLabel.lineSpacing = 5;  //设置行间距
_coreTextLabel.wordSpacing = 2;  //设置字间距


//如果不需要任何的自定义链接和关键字, 赋值nil即可
[_coreTextLabel setText:@"满街脚步突然静[调皮]了,满天柏树突然没有[白眼]动摇,这一刹[擦汗]我只需要一罐热茶吧,那味道似是[滑稽]什么都不紧要,唱片店内[擦汗]传来异国民谣,那种快乐[白眼]突然被我需要,不亲切[调皮]至少不似想你般[龇牙]奥妙,情和调随著怀缅变得萧条,原来过得很快乐[擦汗],[白眼]只我一人未发觉,如能忘掉渴望,[花心]岁月长衣裳薄,无论于什么角落[噘嘴],不假设你或会在旁,我也可畅游异国放心吃喝[调皮][调皮][调皮]" customLinks:nil keywords:nil];

CGSize size = [coreTextLabel sizeThatFits:CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
self.coreTextLabel.frame = CGRectMake(0, 100, size.width, size.height);
[self.view addSubview:coreTextLabel];

image

2. 所有的链接 , @链接 , #话题#链接 , 手机号链接 , 网址链接 , 邮箱链接

    _coretextLabel = [[MYCoreTextLabel alloc]init];
    _coretextLabel.delegate = self;

//是否匹配网址链接 , 以及相关设置
_coretextLabel.showWebLink = YES;
_coretextLabel.webLinkBackColor = [UIColor redColor];  //设置网址链接点击背景色
_coretextLabel.webLinkFont = [UIFont systemFontOfSize:20]; //设置网址链接的字体大小
_coretextLabel.webLinkColor = [UIColor greenColor]; //设置网址链接的颜色

//匹配 #话题#链接
_coretextLabel.showTopicLink = YES;
_coretextLabel.topicLinkColor  = [UIColor redColor];
_coretextLabel.topicLinkFont = [UIFont systemFontOfSize:20];
_coretextLabel.topicLinkBackColor = [UIColor grayColor];


//匹配 @ 链接
_coretextLabel.showTrendLink = YES;
//如果不设置任何相关信息 , 默认和普通文本大小一致  , 颜色默认蓝色


//匹配手机号链接
_coretextLabel.showPhoneLink = YES;
_coretextLabel.phoneLinkFont = [UIFont systemFontOfSize:15.f];
_coretextLabel.phoneLinkColor = [UIColor purpleColor];
_coretextLabel.phoneLinkBackColor = [UIColor brownColor];

//匹配邮箱链接
_coretextLabel.showMailLink = YES;
//如果不设置任何相关信息 , 默认和普通文本大小一致  , 颜色默认蓝色

//设置自定义点击链接为  @"哥哥"
[_coretextLabel setText:@"阿南。#测试#现在每次吃栗子我都会想起父亲,想起小时候每到深秋,父亲#测试#在地里干农活都会在家乡的山间摘好多野栗子回来给我吃,他不给哥哥吃,他自己也不吃。只给我一个人吃。看到你在书里写给阿明的信,好几次我都哽咽了。阿明尚ww.dsa.cn且对你如此,可你却还的如此的爱他www.baidu.com。可对于我的父亲,我深觉自己做的这www.google.cn些微不足道,甚至不值一提。去年他动手术,我和哥哥送他去医院,晚上,我和哥哥离开,只留他#测试#一人在医院。第二日,我去医院@小明 看到手术后的他躺在病床上憔悴不已。母亲守在一旁。心揪成一团。三个月前哥哥大婚,看他和母亲忙前忙后,看到他满脸的胡渣以及母亲双鬓若隐若现的白发。更是心痛不已。www.123.com , 手机号链接13912345678 , 邮箱链接[email protected]" customLinks:@[@"哥哥"] keywords:nil];

     //设置frame
     CGSize size              = [coretextLabel sizeThatFits:CGSizeMake(200, 600)];
     self.coretextLabel.frame = CGRectMake(100, 100, size.width, size.height);
     [self.view addSubview:coretextLabel];

image

3. 文字中的关键字显示

    _coretextLabel = [[MYCoreTextLabel alloc]init];

//设置普通文本属性
_coretextLabel.textFont = [UIFont systemFontOfSize:14.f]; //设置文本大小
_coretextLabel.textColor = [UIColor brownColor];       // 设置文本颜色
_coretextLabel.lineSpacing = 2;    //设置行间距
_coretextLabel.wordSpacing = 1.5;  //设置字间距

//设置关键字属性
_coretextLabel.keywordFont = [UIFont systemFontOfSize:20];
_coretextLabel.keyWordColor = [UIColor redColor]; //设置关键字颜色
_coretextLabel.keyWordBackColor = [UIColor blueColor]; //设置关键字背景高亮色 , 如果不需要可自行调整为透明 或者和背景色一样 , 默认是黄色的

[_coretextLabel setText:@"山脚至山腰是茂盛青翠的马尾松、楠木、云杉、枫树等树林,绵延几十公里,瞬间把游客带进世外桃源。山腰朝上,杂生着三百多种杜鹃树,杜鹃树不高,一米两米不等,马樱花类居多。听导游介绍,“大理三月好风光”时节,三百多种杜鹃花盛开,将苍山装扮成花的海洋。www.google.cn 红色、白色、紫色交相辉映,恍惚人间天堂。海拔四千米以上,由于气候寒冷,草木无法生长,终年积雪,皑皑如白云飘落山顶.苍山巍峨,十九座尖峰高耸入云,山顶白雪皑皑,晶莹剔透,犹如海明威小说中的乞力马扎罗雪峰,“苍山雪”由此而来。雪峰下是草甸,@顺坡势绵延着一望无际的绿草,莽莽苍苍,微风过处,送来阵阵远古苍茫。草丛中,洁白的大雪素展示肤色,蓝色龙胆不停地眨眼,绯红绿绒蒿卖弄衣裳,金色的柴胡在招摇,红色紫云英微笑不停……更有许多不知道名字的杂草一个劲地绿,阳光下开心地开满了花朵,朵朵都在人们眼前盼望,www.baidu.com美丽可爱野花是雪峰的祝福,#是山坡的语言#,#是苍山的心事#,是小草和花朵为沧桑写下的抒情诗歌。成双成对的彩斑蝶于花海中翩翩起舞,嗡嗡的蜜蜂在花瓣间打闹。草甸以下青一色郁郁葱葱的林海,四季青翠的马尾松,笔直修长的杉木,高大俊秀的枫树,@枝繁叶茂的楠木,摇弋多姿的板栗……逍遥的松鼠在树枝间练功,喜鹊逗留树顶啁啾,子规在杜鹃枝缝里跳跃,金丝鸟在草丛嬉戏,@好不热闹!树下,蚂蚁在腐烂落叶堆中穿行……林间仙雾缭绕,清香沁肺。十九峰高耸入云,巍峨雄壮,山峰下沟壑纵横;十八溪流水潺潺,涧泉汩汩,飞瀑挂于岩石悬崖。姊妹山——鸡足山顶庙塔玲珑剔透,金碧辉煌;北面玉龙雪山莽莽苍苍,冰清玉洁。玉局峰下百余米处有个方圆十来亩的圆形水潭,名叫洗马潭,是玉局峰、龙泉峰雪水积淀而成,潭水清澈,滟滟如梦" customLinks:@[@"十九"] keywords:@[@"苍山",@"大理",@"导游"]];
//customLinks : 添加自定义链接字 , 如不需要 , 传nil , 可以添加自定义链接的一些属性
//keywords : 关键字 ,如不需要,传nil即可
_coretextLabel.delegate = self;  //设置代理便可监听点击的文本以及类型

CGSize size = [coretextLabel sizeThatFits:CGSizeMake([UIScreen mainScreen].bounds.size.width, MAXFLOAT)];
coretextLabel.frame = CGRectMake(0, 100, size.width, size.height);
[self.view addSubview:coretextLabel];

image

4. 比较复杂的图文混排 (具体请参照DetailViewController中的使用)

    _coretextLabel = [[MYCoreTextLabel alloc]init];

//设置普通文本的属性
_coretextLabel.textFont = [UIFont systemFontOfSize:15.f];   //设置普通内容文字大小
_coretextLabel.textColor = [UIColor brownColor];   // 设置普通内容文字颜色
_coretextLabel.lineSpacing = 5;   //设置行间距
_coretextLabel.wordSpacing = 0.5; //设置字间距

//设置网址链接的属性
_coretextLabel.showWebLink  = YES;
_coretextLabel.webLinkFont = [UIFont systemFontOfSize:18.f];  //设置网址链接字体大小
_coretextLabel.webLinkColor = [UIColor blueColor];  //设置网址链接字体颜色
_coretextLabel.webLinkBackColor = [UIColor redColor];  //设置网址链接点击背景色

//设置 #话题#的属性
_coretextLabel.showTopicLink = YES;
_coretextLabel.topicLinkFont = [UIFont systemFontOfSize:15.f];
_coretextLabel.topicLinkColor = [UIColor redColor];
_coretextLabel.topicLinkBackColor = [UIColor blackColor];

//设置 @ 的属性
_coretextLabel.showTrendLink = YES;
_coretextLabel.trendLinkFont = [UIFont systemFontOfSize:18];
_coretextLabel.trendLinkColor = [UIColor purpleColor];
_coretextLabel.trendLinkBackColor = [UIColor darkGrayColor];

//设置邮箱的属性
_coretextLabel.showMailLink = YES;
_coretextLabel.mailLinkFont = [UIFont systemFontOfSize:18.f];
_coretextLabel.mailLinkColor = [UIColor redColor];
_coretextLabel.mailLinkBackColor = [UIColor greenColor];

//设置手机号的属性
_coretextLabel.showPhoneLink = YES;
_coretextLabel.phoneLinkFont = [UIFont systemFontOfSize:15.f];
_coretextLabel.phoneLinkColor = [UIColor redColor];
_coretextLabel.phoneLinkBackColor = [UIColor blueColor];

//设置自定义链接的属性
_coretextLabel.customLinkFont = [UIFont systemFontOfSize:18.f];  //设置自定义链接字 字体大小
_coretextLabel.customLinkColor = [UIColor greenColor];  //设置自定义链接字体颜色
_coretextLabel.customLinkBackColor = [UIColor orangeColor];  //设置自定义链接点击背景色

//设置关键字的属性
_coretextLabel.keywordFont = [UIFont systemFontOfSize:15];
_coretextLabel.keyWordColor = [UIColor blueColor];  //设置关键字颜色
_coretextLabel.keyWordBackColor = [UIColor yellowColor];  //设置关键字高亮背景色

_coretextLabel.delegate = self;   //设置代理 , 用于监听点击事件 以及接收点击内容等

//设置frame
CGSize size = [coretextLabel sizeThatFits:CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
self.coretextLabel.frame = CGRectMake(0, 20, size.width, size.height);
[self.view addSubviews:coretextLabel];

image

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.