NSTextView 的内在内容大小

Posted

技术标签:

【中文标题】NSTextView 的内在内容大小【英文标题】:intrinsic content size for NSTextView 【发布时间】:2014-02-19 05:18:53 【问题描述】:

我正在继承 NSTextView 并使用以下代码来计算内在内容大小,以便文本视图的高度随着它在我的自动布局约束中的内容而增长。

- (CGSize)intrinsicContentSize

    return [[self layoutManager] usedRectForTextContainer:[self textContainer]].size;

除了在初始调用中返回 (0,0) 的大小外,此方法有效。

如果我在创建文本视图后在我的视图中调用 [self setNeedsLayout:YES] 并使 -layout 中的文本视图的内容大小无效,它将为新的空文本视图返回正确的大小。

有没有办法让-intrinsicContentSize 在不更新视图布局的情况下为我的新文本视图返回正确的大小?

【问题讨论】:

致电invalidateIntrinsicContentSize? 顺便说一句,让文本视图随内容一起增长的常用方法是查看它的contentSize,它会自动为您维护...... @matt 这就是我在 -layout 中所做的工作,但我不明白为什么我必须第一次在 -layout 中这样做。当文本更改时,我使内容大小无效,效果很好。 @matt NSTextView 没有 contentSize 属性,除非我遗漏了什么。 是的,因为我已经习惯了ios,所以我自然而然地想到了UITextView。请忽略我所说的一切(除非为了以后能开怀大笑)。 【参考方案1】:

查看this thread,其中 Alexander Staubo 分享了您的代码的略微调整版本。这对我有用。

【讨论】:

以上是关于NSTextView 的内在内容大小的主要内容,如果未能解决你的问题,请参考以下文章

如何在放大的 NSScrollView 中修复 NSTextView 的奇怪大小

drawRect 会改变内在内容大小吗?

内在内容大小与对齐矩形

SVG 内容的内在大小属性

UIView 和内在内容大小

NSTextView 提取原始文本内容