在 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
添加为子视图,那么很容易添加告诉它增长以填充父视图的约束。但是,我不确定设置 NSScrollView
的 documentView
时的等效机制是什么。有什么建议么?谢谢。
编辑
就像往常一样,在我发布这篇文章 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)
)
这应该适用于您的情况,听起来您已经让文档视图的垂直尺寸按照您的要求运行。
我有一个包含 2 个并排窗格的 NSSplitView
,在右侧窗格中有一个 NSScrollView
。我有一个单独的 XIB 文件,其中包含我想嵌入到滚动视图中的视图 (inspectorView
),我喜欢这样:
self.scrollView.documentView = inspectorView
这非常有效,但是,当我将拆分视图窗格加宽一点时,我的 inspectorView
不会水平增长以填充 space。使用 -NSShowAllviews YES
我已经确认滚动视图正在正确调整大小,但是,inspectorView
保持与最初分配给 scrollView.documentView
时相同的宽度。这就是我的问题......我希望它扩展以填充拆分视图宽度。
我对所有内容都使用自动布局,并且我的所有视图都是使用 XIB 创建的。我以编程方式做的唯一一件事就是设置滚动视图的 documentView
属性。
如果我将 inspectorView
添加为子视图,那么很容易添加告诉它增长以填充父视图的约束。但是,我不确定设置 NSScrollView
的 documentView
时的等效机制是什么。有什么建议么?谢谢。
编辑
就像往常一样,在我发布这篇文章 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)
)
这应该适用于您的情况,听起来您已经让文档视图的垂直尺寸按照您的要求运行。