找到uilabel中文本的位置{x,y}

时间:2012-02-14 08:42:08

标签: objective-c ipad

我有一个来自服务器的字符串,我在UILabel multiligne上显示。它在该字符串中,我正在识别一些特定的子字符串。我想在子字符串上放置一个按钮(按钮将是UILabel的子视图)。为此,我需要子串坐标。我经历过这个,但我无法理解。假设我的完整字符串是abc,567-324-6554,纽约。我希望567-324-6554显示在我需要其坐标的按钮上。 如何使用上面的链接查找子串的坐标? 谢谢,

1 个答案:

答案 0 :(得分:7)

UILabel没有任何方法可以执行此操作。您可以使用UITextView执行此操作,因为它实现了UITextInput protocol。您需要将文本视图的editable属性设置为NO

像这个未经测试的代码应该有效:

- (CGRect)rectInTextView:(UITextView *)textView stringRange:(CFRange)stringRange {
    UITextPosition *begin = [textView positionFromPosition:textView.beginningOfDocument offset:stringRange.location];
    UITextPosition *end = [textView positionFromPosition:begin offset:stringRange.length];
    UITextRange *textRange = [textView textRangeFromPosition:begin toPosition:end];
    return [textView firstRectForRange:textRange];
}

那应该返回CGRect(在文本视图的坐标系中),它覆盖stringRange指定的子字符串。如果将按钮设置为文本视图的子视图,则可以将按钮的框架设置为此矩​​形。

如果子串跨越多行,则矩形将仅覆盖第一行。