8
如何在UILabel中为文本的子字符串找到CGRect?
对于给定的NSRange,我想找到一个CGRect在UILabel对应的的字形NSRange。例如,我想CGRect在句子“快速的棕色狐狸跳过懒狗”中找到包含“狗”一词的。 诀窍是,它UILabel具有多行,并且文本确实是attributedText,所以要找到字符串的确切位置有点困难。 我想在UILabel子类上编写的方法如下所示: - (CGRect)rectForSubstringWithRange:(NSRange)range; 细节,对于那些感兴趣的人: 我的目标是能够创建一个具有UILabel确切外观和位置的新UILabel,然后可以对其进行动画处理。我已经弄清了其余的一切,但是尤其是这一步使我此刻退缩。 到目前为止,我为解决问题所做的工作: 我希望在iOS 7上有一些Text Kit可以解决此问题,但是我在Text Kit上看到的每个示例大多数都针对UITextView和UITextField,而不是UILabel。 我在这里看到了有关Stack Overflow的另一个问题,该问题有望解决该问题,但是公认的答案已经使用了两年多了,并且代码在归因于文本的情况下表现不佳。 我敢打赌,对此的正确答案涉及以下之一: 使用标准的文本工具包方法在一行代码中解决此问题。我敢打赌这会涉及NSLayoutManager到textContainerForGlyphAtIndex:effectiveRange 编写一个复杂的方法,将UILabel分成几行,并可能使用Core Text方法在一行中找到一个字形的矩形。我目前最好的选择是分解@mattt出色的TTTAttributedLabel,该方法具有一种在某个点找到字形的方法-如果我将其反转,然后找到一个字形的点,则可能会起作用。 更新:这是一个github要点,其中包含我迄今为止为解决该问题而尝试过的三件事:https : //gist.github.com/bryanjclark/7036101