Open
Description
完美解决此问题, 以$100
美刀作为酬谢, 支持 微信支付, 支付宝支付, PayPal支付.
- 解决上述问题, 确保自测无误.
- 提交PR或直接联系本人交付相关代码.
- 本人验证通过测试.
- 2小时内根据以上支付方式支付酬谢金.
- Release记录 以示感谢🙏
描述:
本库对于 UILabel
的点击事件实现方案是使用 TextKit
构建一个与 UILabel
显示一致的内容, 通过TextKit
计算出所点击的字符.
问题:
由于UILabel
的特殊性, 导致TextKit
无法构建出一个完全匹配的内容, 在某些情况下总会存在误差.
比如 富文本中 存在中英文不同字体混合的情况, 最终显示会不一致.
目前进展:
UILabel
真实的NSAttributedString
对象的获取已解决, 可以肯定的是目前得到的NSAttributedString
对象是准确无误的. 无需再考虑这方面的问题.
通过各种实践已知 TextKit
和UILabel
的行高计算策略不同, 导致相同的NSAttributedString
对象实际渲染后显示的不一样.
已经尝试使用Neat的方案解决, Neat本身存在很多问题, 比如富文本中包含NSTextAttachment
Neat 就会出现问题, 幸运的是 这个问题我已经解决了.
其他问题目前还没有解决, 比如 numberOfLines会导致计算出错.
Neat的方案是否真正可靠还是个未知数, 但最起码它是目前最接近成功的一种方案, 你可以考虑继续使用Neat的方案走下去, 也可以另辟蹊径.
如何进行测试:
目前该分支内已经包含了调试代码.
在 CheckingViewController.swift
文件中, 点击label
后 会创建一个DebugView
添加到UILabel
上, DebugView
上显示的内容由TextKit
绘制, 如果所显示的内容完全重合 则表示通过, 如果出现不一致的情况 则表示不通过.
例子:
通过:
不通过: