0

我正在尝试为某些行定义 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]];

如果我在文档唤醒后尝试设置标签位置,也会出现同样的问题,所以我在第一次按键时计算标签,这不太好。

解决这个问题的最好方法是什么?

4

1 回答 1

0

编辑

这个问题的答案只是在检索字形坐标之前确保 NSLayoutManager 的布局。

[[_textView layoutManager] ensureLayoutForTextContainer:[_textView textContainer]];

于 2019-02-22T14:20:56.820 回答