12

如何设置 NSSplitView 的起始位置?

我发现最接近它的东西是 setPosition

//Set splitView position.
[splitView setPosition:330 ofDividerAtIndex:0];

不过,这似乎没有任何作用,我的拆分视图仍然从中间的分隔线开始。

有任何想法吗?

4

4 回答 4

5

您不设置分隔线的位置,而是设置 NSSplitView 的子视图的大小。然后分隔器会自动重新定位。

这就是我定位分隔线和子视图大小的方式(快速):

let subview: NSView = mySplitView.subviews[1] as NSView
subview.setFrameSize(NSMakeSize(subview.frame.size.width, 100))
于 2015-01-03T22:24:31.143 回答
3

NSSplitView需要初始的非大小范围才能正确布局。如果您的视图大小为零,则它不会显示预期的布局。

最好的方法是提供非零布局(这是 IB 所做的),但有时这是不可能的。

如果您不能提供非零大小,那么我认为您必须提供适当的- (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)oldSize委托方法实现来自己手动布局所有内容。(这是我目前的最佳做法)

于 2014-05-26T02:16:21.587 回答
3

在包含拆分视图的视图类中

override func viewWillAppear() {
    self.mySplitView.setPosition(120, ofDividerAtIndex: 0)
}

或您希望它开始的任何地方。

于 2017-03-12T22:10:42.670 回答
1

也许这就是中心?如果 splitView 正确连接到您的拆分视图,则该代码应该可以工作。在尝试设置分隔线的位置之前,您可能应该记录 [splitView minPossiblePositionOfDividerAtIndex:0] 和 [splitView maxPossiblePositionOfDividerAtIndex:0],以便了解可能的值。

于 2012-08-17T00:46:44.217 回答