-
Notifications
You must be signed in to change notification settings - Fork 78
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
$100美刀 有偿征集解决方案 TextKit与UILabel内容同步问题 #12
Comments
先调用layoutIfNeeded,之后在用sizeThatFits计算高度 |
??? 要不先仔细看看问题? |
当前状态: 实践中, 感谢MPITextKit作者wanhmr提供的帮助. |
大部分情况已经得到了解决, 目前已知的问题还剩下一个:
TextKit的截断处理有问题, 即使字符串中包含了3个换行, TextKit依旧会将"edfg"显示在第二行. |
已知问题增加: Label的 |
目前主要问题集中在发生文本截断时(numberOfLines非0 或 高度低于内容高度时)和段落样式的某些情况时, 我不清楚 |
有尝试过发起Developer Technical Support么,感觉这种黑盒问题可以直接问官方 |
还没有, 感觉上来看 只能通过用自己创建的视图绘制来避免这种问题. |
感觉文本截断问题是不是可以通过重写 |
完美解决此问题, 以
$100
美刀作为酬谢, 支持 微信支付, 支付宝支付, PayPal支付.描述:
本库对于
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
绘制, 如果所显示的内容完全重合 则表示通过, 如果出现不一致的情况 则表示不通过.例子:
通过:
不通过:
分支地址
调试页面:
相关类:
The text was updated successfully, but these errors were encountered: