All Projects → coderMyy → Mycoretextlabel

coderMyy / Mycoretextlabel

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

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Mycoretextlabel

Swiftcocoadsl
An easy way to write iOS UI
Stars: ✭ 103 (-46.35%)
Mutual labels:  ios-app, ios-demo, ios-lib, ios-sdk, ios-ui
Iosproject
IOS综合项目,完善的框架,路由模块化设计,集成科大讯飞SDK方便iOS基本输入控件实现语音辅助输入,UI效果参照京东APP,JS与OC交互,ionic跨平台开发,MQTT 协议,即时通讯协议,视屏播放,跑马灯效果 仿美团地图定位,城市收索, 友盟分享,基础动画 增加FCUIID帮助类,引导页功能模块,照片上传 ,UIView自定义导航栏,文件下载,Masonry 案例,fmdb,数据库,sqlite,百度地图,二维码,照片上传,照片上传有进度,列表倒计时,H5和原生交互,自定义各种弹框,常见表单类型,人脸识别,列表加载图片,列表拖拽,日历操作,导航条渐变,核心动画,动画特效等等
Stars: ✭ 291 (+51.56%)
Mutual labels:  ios-app, ios-demo, ios-lib, ios-ui, ios-animation
Cocoaasyncsocket demo
基于AsyncSocket搭建即时通讯体系 . 包含TCP连接 , 消息发送 , 消息接收 , 心跳处理 ,断网重连 , 消息超时 , 消息分发 , 数据库结构设计 , 消息丢失等 . 以及UI设计, 文本表情消息/语音消息/图片消息/视频消息/文件消息/撤回消息/提示语消息的实现思路讲解
Stars: ✭ 981 (+410.94%)
Mutual labels:  ios-app, ios-demo, ios-lib, ios-ui
Avsqldebugger
A Simple Core Data Debugger that will look inside your apps DB
Stars: ✭ 30 (-84.37%)
Mutual labels:  ios-app, ios-demo, ios-lib, ios-sdk
Iosproject
iOS project of collected some demos for iOS App, use Objective-C
Stars: ✭ 5,357 (+2690.1%)
Mutual labels:  ios-app, ios-demo, ios-ui, ios-animation
Pvview
A small library that helps you to make an amazing parallax view
Stars: ✭ 227 (+18.23%)
Mutual labels:  ios-lib, ios-ui, ios-animation
Nvactivityindicatorview
A collection of awesome loading animations
Stars: ✭ 10,031 (+5124.48%)
Mutual labels:  ios-lib, ios-ui, ios-animation
Rhplaceholder
Show pleasant loading view for your users 😍
Stars: ✭ 238 (+23.96%)
Mutual labels:  ios-lib, ios-ui, ios-animation
RDPopup
A simple way to add custom Popup. Design on Nib and use as you want. Written in Objective-C.
Stars: ✭ 19 (-90.1%)
Mutual labels:  ios-app, ios-ui, ios-lib
Swiftui Tutorials
A code example and translation project of SwiftUI. / 一个 SwiftUI 的示例、翻译的教程项目。
Stars: ✭ 1,992 (+937.5%)
Mutual labels:  ios-app, ios-demo, ios-ui
Hotels
酒店预订App
Stars: ✭ 323 (+68.23%)
Mutual labels:  ios-app, ios-demo, ios-animation
Autoinch
优雅的iPhone全尺寸/等比例精准适配工具
Stars: ✭ 395 (+105.73%)
Mutual labels:  ios-app, ios-demo, ios-ui
Kdintroview
Stars: ✭ 300 (+56.25%)
Mutual labels:  ios-lib, ios-ui, ios-animation
Example Ios Apps
 A curated list of Open Source example iOS apps developed in Swift. An amazing list for people who are beginners and learning ios development and for ios developers who need any example app or feature.
Stars: ✭ 461 (+140.1%)
Mutual labels:  ios-app, ios-demo, ios-ui
Slidingtabbar
A custom TabBar view with sliding animation written in Swift.
Stars: ✭ 84 (-56.25%)
Mutual labels:  ios-app, ios-ui
Ios Arkit
iOS Location based Augmented Reality engine
Stars: ✭ 88 (-54.17%)
Mutual labels:  ios-demo, ios-lib
Lihalert
Advance animated alerts for iOS written in Swift
Stars: ✭ 34 (-82.29%)
Mutual labels:  ios-ui, ios-animation
Flexlayout
FlexLayout adds a nice Swift interface to the highly optimized facebook/yoga flexbox implementation. Concise, intuitive & chainable syntax.
Stars: ✭ 1,342 (+598.96%)
Mutual labels:  ios-lib, ios-ui
Geektime Ios Course
极客时间 —《从0开发一款iOS应用》讲义及示例工程
Stars: ✭ 126 (-34.37%)
Mutual labels:  ios-app, ios-demo
Swift project
原OC项目用swift实现,纯swift项目,可作为学习swift的demo,包含多个自定义控件,并且进行封装网络请求库,结构清晰。
Stars: ✭ 133 (-30.73%)
Mutual labels:  ios-app, ios-demo

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].