我正在尝试为某些行定义 y 轴位置,并在 NSTextView 中在它们旁边放置标签。我正在使用 glyphRangeForCharacterRange。
它有点工作,但文本视图可以有很多文本(甚至〜4000-5000行)并且用插图包裹。当我滚动到看不见的东西时,结果是错误的。它似乎在没有包装的情况下返回值,或者我认为。如果我在滚动到相应文本时对位置进行更新,则它们的计算正确。
这是没有额外偏移的代码:
NSRange characterRange = NSMakeRange(startPosition, length);
NSRange range = [[self.textView layoutManager] glyphRangeForCharacterRange:characterRange actualCharacterRange:nil];
label.frame = rect;
NSRect rect = [[self.textView layoutManager] boundingRectForGlyphRange:range inTextContainer:[self.textView textContainer]];
如果我在文档唤醒后尝试设置标签位置,也会出现同样的问题,所以我在第一次按键时计算标签,这不太好。
解决这个问题的最好方法是什么?