可可 – 使用Autolayout扩展NSTextViews

我的应用程序包含一个NSScrollView,其文档视图包含多个垂直堆叠的NSTextViews,每个NSTextView都会在添加文本时在垂直方向上调整大小.

目前,这是所有的代码管理. NSTextViews会自动调整大小,但是我们通过NSViewFrameDidChangeNotification重新调整大小,重新计算所有来源,以便它们不重叠,并调整其超级视图(滚动视图的文档视图),以使它们都适合并可以滚动.

这似乎是完美的autolayout的候选人!我在第一个文本视图及其容器之间设置NSLayoutConstraints,最后一个文本视图及其容器,以及彼此之间的每个文本视图.然后,如果任何文本视图增长,它会自动“下推”下面的文本视图的起源以满足约束,最终增加文档视图的大小,并且每个人都快乐!

除了,似乎没有办法使NSTextView自动增长,因为在基于约束的布局中添加文本?如果没有为其高度指定约束,则使用完全相同的自动扩展为文本的NSTextView,它会自动展开为0并且未显示.如果我指定一个约束,即使是> = 20的不等式,它仍然停留在该大小,并且不会随着添加文本而增长.

我怀疑这与NSTextView实现的-intrinsicContentSize有关,默认情况下返回(NSViewNoInstrinsicMetric,NSViewNoInstrinsicMetric).

所以我的问题:如果我根据我的文本的布局子类NSTextView返回一个更有意义的innerContentSize,那么我的自动布局然后按预期工作吗?

任何关于实现内在的内容大小的指针,用于垂直调整大小的NSTextView?

我有一个与NSTextField类似的问题,而事实证明,这是因为希望沿垂直方向紧紧拥抱其文本内容的视图.因此,如果将内容拥抱优先级设置为低于其他约束的优先级,则可能会起作用.例如.:

[textView setContentHuggingPriority:NSLayoutPriorityFittingSizeCompression-1.0 forOrientation:NSLayoutConstraintOrientationVertical];
http://stackoverflow.com/questions/11237622/using-autolayout-with-expanding-nstextviews

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:可可 – 使用Autolayout扩展NSTextViews