我试图复制iBooks在用户添加注释时显示的图标效果。此注释位于与突出显示的文本相同的行的文本的最右侧。我希望在每行文本旁边显示一条带有注释的文本。我正在使用UITextView并且我已将文本归结为显示已突出显示的内容,但我无法确定哪个呈现的文本行具有这些属性。
大多数UITextView方法似乎都处理文本范围而不是渲染行。有没有办法在给定范围的UITextView中获取渲染行?
答案 0 :(得分:0)
我想出了如何做到这一点。对于要在旁边显示图标的每个项目,您可以在该范围的开头对您的属性文本进行子字符串。然后,您将获得该文本的边界矩形并使用它来计算图标的放置位置:
NSAttributedString *substring = [self.attributedText attributedSubstringFromRange:NSMakeRange(0, location.unsignedIntegerValue)];
// Find the frame that would enclose the substring of text at the start of the range.
CGRect frame = [substring boundingRectWithSize:maxSize
options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading)
context:nil];
UIImage *image = [UIImage imageNamed:@"icon.png"];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.frame.origin.x + self.frame.size.width + 10, self.frame.origin.y + frame.size.height - 20, image.size.width, image.size.height)];
[self.view addSubview:imageView];
请注意,这会将图标放在文本的右侧。