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];
}
Это должно вернуть CGRect
(всистема координат текстового представления), которая покрывает подстроку, указанную stringRange
.Вы можете установить рамку кнопки на этот прямоугольник, если сделаете кнопку подпредставлением текстового представления.
Если подстрока охватывает несколько строк, прямоугольник будет охватывать только первую строку.