在NSScrollView中扩展documentView

时间:2016-03-09 06:48:38

标签: cocoa appkit nsscrollview

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

self.scrollView.documentView = inspectorView

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

我使用autolayout进行所有操作,并且所有视图都是使用XIB创建的。我以编程方式做的唯一事情就是设置滚动视图的documentView属性。

如果我将inspectorView添加为子视图,则可以轻松添加约束,告诉它增长以填充父视图。但是,在设置documentView的{​​{1}}时,我不确定等效机制是什么。有什么建议?感谢。

修改

通常情况下,在我发布这个20分钟后,我发现了一种让它工作的方法,即设置自动调整大小掩码,然后让它将该掩码转换为约束。

NSScrollView

通常,我将inspectorView.autoresizingMask = .ViewWidthSizable inspectorView.translatesAutoresizingMaskIntoConstraints = true self.scrollView.documentView = inspectorView 设为translatesAutoresizingMaskIntoConstraints,而不是false。无论如何,正如我所说,这似乎有效,但我还不确定这是正确的方式。想法?

1 个答案:

答案 0 :(得分:1)

您可以简单地将文档视图的左右边缘固定到其超级视图的相应边缘 - 滚动视图的contentViewNSClipView实例):< / p>

// 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) 
)

这应该适用于您的情况,听起来您已经获得了文档视图的垂直大小,符合您的要求。