有没有办法在 UILabel 中为 NSRange 获取 CGRects?
Posted
技术标签:
【中文标题】有没有办法在 UILabel 中为 NSRange 获取 CGRects?【英文标题】:Is there any way to get CGRects for NSRange in UILabel? 【发布时间】:2013-09-01 17:50:03 【问题描述】:我有一个带有 NSAttribtuedString 的 UILabel,需要在字符串中找到与某个 NSRange 对应的所有 CGRect。有什么简单的方法可以做到这一点吗?
我正在寻找这个,因为我打算像这样在标签上覆盖突出显示视图:
我知道 UITextView 更适合这个,因为它实现了 UITextInput 协议(它具有我需要的所有方法),但由于 ios 中的一个错误,我仅限于 UILabel。
我一直在寻找解决方案但没有成功。 This gist 对我不起作用,我还没有找到任何 UILabel 子类可以实现任何对我有帮助的方法。
有什么建议吗? 皮特。
【问题讨论】:
你可能会更幸运地找到一个解决这个问题的方法,让它在 UILabel 中工作。 ios7这个bug还存在吗? 我想你是对的。此外,该错误已在 iOS 7 中修复。它与 line spacing when using custom font 有关。我的解决方案是使用多行 UILabel(不受它影响)而不是错误的 UITextView。我想我必须寻找另一种方法来让它在 iOS 6 上运行...... 【参考方案1】:UILabel 没有任何方法可以从范围中查找 rect。您可以使用 UITextView (将 UITextView 可编辑属性设置为 NO) 来完成。 UITextview 实现了 UITextInput 协议。您可以使用 UITextInput 协议方法从范围中获取 rect
【讨论】:
是的,已经知道了。但由于 iOS 6 上的行高错误,我无法使用 UITextView。以上是关于有没有办法在 UILabel 中为 NSRange 获取 CGRects?的主要内容,如果未能解决你的问题,请参考以下文章
UILabel 在 cellForRowAtIndexPath 中为零