在 NSScrollView 中扩展 documentView

Expanding documentView in NSScrollView

我有一个包含 2 个并排窗格的 NSSplitView,在右侧窗格中有一个 NSScrollView。我有一个单独的 XIB 文件,其中包含我想嵌入到滚动视图中的视图 (inspectorView),我喜欢这样:

self.scrollView.documentView = inspectorView

这非常有效,但是,当我将拆分视图窗格加宽一点时,我的 inspectorView 不会水平增长以填充 space。使用 -NSShowAllviews YES 我已经确认滚动视图正在正确调整大小,但是,inspectorView 保持与最初分配给 scrollView.documentView 时相同的宽度。这就是我的问题......我希望它扩展以填充拆分视图宽度。

我对所有内容都使用自动布局,并且我的所有视图都是使用 XIB 创建的。我以编程方式做的唯一一件事就是设置滚动视图的 documentView 属性。

如果我将 inspectorView 添加为子视图,那么很容易添加告诉它增长以填充父视图的约束。但是,我不确定设置 NSScrollViewdocumentView 时的等效机制是什么。有什么建议么?谢谢。

编辑

就像往常一样,在我发布这篇文章 20 分钟后,我发现了一种让它工作的方法,即设置自动调整大小掩码,然后让它将该掩码转换为约束。

inspectorView.autoresizingMask = .ViewWidthSizable
inspectorView.translatesAutoresizingMaskIntoConstraints = true
self.scrollView.documentView = inspectorView

通常,我将 translatesAutoresizingMaskIntoConstraints 设置为 false,而不是 true。不管怎样,正如我所说,这似乎可行,但我还不确定这是 正确的 方式。想法?

您可以简单地将文档视图的左右边缘固定到其父视图的相应边缘 - 滚动视图的 contentView(一个 NSClipView 实例):

// docView and scrollView defined elsewhere.
// In both cases translatesAutoresizingMaskInConstraints is set to false.

scrollView.documentView = docView

let viewsDict = ["docView" : docView]
scrollView.contentView.addConstraints(
    NSLayoutConstraint.constraintsWithVisualFormat("H:|[docView]|", 
        options: .allZeros, 
        metrics: nil, 
        views: viewsDict) 
)

这应该适用于您的情况,听起来您已经让文档视图的垂直尺寸按照您的要求运行。