YYlabelCopy
2024-04-30 21:31:11
YYlabelCopy
前言
最近公司刷题项目重构,之前刷题是采用富文本渲染,性能极差,业界大神ibireme的YYKit想必大家都知道,YYText的好用之处我就不再赘述.一开始我们是把UIlabel换成YYTextView,为什么不直接换成YYlabel,YYlabel支持异步绘制,因为我们是做公考项目的,试题都要支持复制,选择高亮,取消高亮,所以选择了YYtextView,测试比之前效果好一点,但是还是有点卡顿.因为YYtextView的textLayout是私有属性,每次赋值调用富文本,都会有一定的性能开销,所以准备怎么实现YYlabe支持复制,高亮,取消高亮功能
效果图
github下载地址
YYlabelCopy
思路
首先YYlabel是基于coretext绘制的,我在在YYtext中会发现一个类YYTextLayout,YYTextLayout是YYtext的强大之处,里面处理了大量计算,保存了大量的绘制信息.我们拿到这个类,就能取到我们想要的一些位置信息.
怎么做才能对YYtext的入侵比较小呢,这里我采用了分类,去为YYlabel添加一些方法,用关联对象添加一些属性.在手势点击的时候,记录点击的位置,当手势开始滑动的时候,弹出放大镜,在计算手势滑动的位置,用CALayer在YYlabel上添加图层,实现选中的轨迹,高亮,和取消高亮是YYlabel提供的一个方法
[text yy_setTextHighlightRange:rangecolor:[UIColor blueColor]backgroundColor:[UIColor grayColor]tapAction:^(UIView *containerView, NSAttributedString *text, NSRange range, CGRect rect){ NSLog(@"tap text range:..."); }]
最终完美实现,目前已在线上稳定运行,具体使用只需要引入分类头文件,一行代码搞定
[label addGestureRecognizer]
YYlabelCopy相关推荐
最新文章
- 干货 | 基于贝叶斯推断的分类模型 机器学习你会遇到的“坑”
- python压缩包怎么安装-Python学习笔记-打包发布Python模块或程序,安装包
- spring注解源码分析--how does autowired works?
- Java设计模式 - 适配器模式
- 信息系统项目管理师:第5章:项目范围管理- 章节真题+解析
- LoadRunner 8.1 学习笔记4
- ${}和#{}的区别
- Supervisor使用教程
- Lucene知识小总结4:索引的反删除
- Spring Shell项目发布
- CF#420 B. Okabe and Banana Trees 思维|暴力|几何
- 手机MODEM 开发(23)---Modem1 NVRAM基础知识总结
- python setup.py卸载
- python数据存储系列教程——xls文件的读写、追加(xlwt、xlwt、xlutils)
- 9. Browser 对象 - Location 对象
- 基于jsp的博客系统
- Windows 10 2018年四月更新版官方正式版
- MTK6737功能展示
- 【视频学习笔记】计算机视觉与深度学习_北京邮电大学_鲁鹏(⭐⭐⭐⭐⭐)
- 关于Vue中$nextTick的作用及实现原理(Vue进阶)