我的应用程序由一个NSScrollView
其文档视图组成,其中包含许多垂直堆叠的NSTextViews
- 每个都在添加文本时在垂直方向上调整大小。
目前,这一切都在代码中进行管理。NSTextViews
自动调整大小,但我用 观察它们的大小,重新计算它们的NSViewFrameDidChangeNotification
所有原点以使它们不重叠,并调整它们的超级视图(滚动视图的文档视图)的大小,以便它们都适合并且可以滚动到。
这似乎是自动布局的完美候选者!我NSLayoutConstraints
在第一个文本视图及其容器、最后一个文本视图及其容器以及每个文本视图之间进行设置。然后,如果任何文本视图增长,它会自动“下推”它下面的文本视图的起源以满足约束,最终增加文档视图的大小,每个人都很高兴!
除了,似乎没有办法NSTextView
在基于约束的布局中添加文本时自动增长?使用与之前输入的文本自动扩展的完全相同NSTextView
的内容,如果我没有为其高度指定约束,它默认为 0 并且不显示。如果我确实指定了一个约束,即使是 >=20 之类的不等式,它也会停留在该大小上,并且不会随着添加文本而增长。
我怀疑这与 NSTextView 的实现有关-intrinsicContentSize
,默认情况下返回(NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric)
.
所以我的问题是:如果我根据文本的布局进行子类化NSTextView
以返回更有意义intrinsicContentSize
的内容,那么我的自动布局会按预期工作吗?
intrinsicContentSize
关于实现垂直调整大小的 NSTextView 的任何指针?