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

fre*_*ind 6 objective-c ipad

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

rob*_*off 7

UILabel没有任何方法可以做到这一点.您可以使用它UITextView,因为它实现了UITextInput协议.您需要将文本视图的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];
}
Run Code Online (Sandbox Code Playgroud)

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

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

  • 至于"我称之为"这个功能",我不知道你的意思是什么.如果你的意思是`rangeOfString:`,你可以阅读手册或查看在http://developer.apple.com的搜索框中键入`rangeOfString`时出现的大量示例代码文件之一.做你的工作! (3认同)
  • 读我的回答. (2认同)