NSTextView的内在内容大小

4
我正在子类化NSTextView,并使用以下代码计算内在内容大小,以便在我的自动布局约束中,文本视图的高度随其内容而增长。
- (CGSize)intrinsicContentSize
{
    return [[self layoutManager] usedRectForTextContainer:[self textContainer]].size;
}

这段代码基本能实现预期的功能,但是在初始调用时会返回 (0,0) 的大小。
如果我在创建文本视图后,在我的视图中调用[self setNeedsLayout:YES]并在-layout中使该文本视图的内容大小失效,它将为新的空文本视图返回正确的大小。
是否有一种方法可以让-intrinsicContentSize 返回新文本视图的正确大小,而不更新我的视图布局?

顺便说一下,使文本视图随其内容增长的常规方法是查看其contentSize,该属性会自动为您维护。 - matt
@matt 这就是我在-layout中所做的,它虽然有效,但我不明白为什么我第一次必须在-layout中这样做。当文本更改时,我会使内容大小失效,这样做也很好用。 - Berry Blue
@matt 如果我没有漏掉什么的话,NSTextView没有contentSize属性。 - Berry Blue
是的,因为我太习惯iOS了,所以我自然而然地在想UITextView方面的事情。请忽略我说的一切(除了为了以后开心地笑一笑)。 - matt
如果这是iOS的话,我的下一个建议会是:你的“第一次”可能太早了吗?文本堆栈还没有设置好...? - matt
显示剩余3条评论
1个回答

1
请查看此线程,其中Alexander Staubo分享了您的代码的稍微调整版本。这对我有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接