Я пытаюсь нарисовать прозрачный CALayer в UITextView, чтобы выделить совпадающий текст при поиске.
Я нашел правильный способ сделать это, но до сих пор не нашел правильных координат. Мне нужно найти источник текстового контейнера. Прямо сейчас я получаю происхождение textView и смещаю происхождение слоя на это:
NSRange match = [[[self textView]text]rangeOfString:@"predict the future"];
NSRange glyphRange = [manager glyphRangeForCharacterRange:match actualCharacterRange:NULL];
CGRect textRect = [manager boundingRectForGlyphRange:glyphRange inTextContainer:[[self textView]textContainer]];
CGPoint textViewOrigin = self.textView.frame.origin;
textRect.origin.x += (textViewOrigin.x / 2);
textRect.origin.y += (textViewOrigin.y / 2);
CALayer* roundRect = [CALayer layer];
[roundRect setFrame:textRect];
[roundRect setBounds:textRect];
[roundRect setCornerRadius:5.0f];
[roundRect setBackgroundColor:[[UIColor blueColor]CGColor]];
[roundRect setOpacity:0.2f];
[roundRect setBorderColor:[[UIColor blackColor]CGColor]];
[roundRect setBorderWidth:3.0f];
[roundRect setShadowColor:[[UIColor blackColor]CGColor]];
[roundRect setShadowOffset:CGSizeMake(20.0f, 20.0f)];
[roundRect setShadowOpacity:1.0f];
[roundRect setShadowRadius:10.0f];
[[[self textView]layer]addSublayer:roundRect];
Я получаю следующий результат, если перемещаю текстовое поле или не делю смещения на 2:
Я хотел бы знать, на правильном ли я пути, а также как найти источник объекта NSTextContainer, если это так.