NSOutlineView不调整NSScrollView文档视图大小

时间:2018-06-11 11:47:29

标签: cocoa nsoutlineview nsscrollview

我有一个NSONutlineView,我已经以编程方式添加到NSScrollView中:

outlineView = ECOutlineView()
outlineView.translatesAutoresizingMaskIntoConstraints = false
scrollView.documentView = outlineView

scrollview被约束到它所在的窗口。除了scrollView不对outlineView长度的变化做出反应这一事实外,一切都按预期运行。

例如,如果展开一行,延长大纲视图,则滚动视图不会调整为允许滚动到新内容。

某些滚动同步确实有效。如果我向下滚动到大纲的末尾并开始删除行,则会更新滚动位置,以便新的底行与滚动视图的底部对齐,但滚动范围仍然不正确

如果我稍微调整窗口大小,scrollView将更新并给出正确的滚动范围。

因此,看起来约束是正确的,我只需要强制更新 - 但是这不应该自动发生吗?

1 个答案:

答案 0 :(得分:0)

对于滚动视图的文档视图,不应将translatesAutoresizingMaskIntoConstraints设置为false。通常,容器视图负责控制它正在管理的视图的属性,因为只有它知道它如何管理位置。并且,如果您正在使用不了解自动布局的容器视图,则应将其保留为默认值。

“容器视图”是指专门用于管理其他视图位置的类。我不只是指任何可能包含子视图的视图。

对于封闭滚动视图,如果您只是将它放在普通视图或您自己的视图类中,并且您使用自动布局来控制其位置,那么您仍然需要设置{{1错误。