2012-08-16 45 views
9

如何设置NSSplitView的起始位置?NSSplitView分隔线的起始位置

我发现的最接近的事情,看起来像它的工作是setPosition两种

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

这似乎并不尽管做任何事情,我仍然SPLITVIEW在中央分隔开始。

任何想法?

回答

1

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

+0

是的,它不是中心。我的最小值是0,我的最大值是999. – arooo 2012-08-17 02:54:29

+0

我不知道该说什么 - 它对我来说工作得很好。我想知道它是否与约束设置有关?我只是拖出一个分割视图,向每一边添加了几个按钮和文本字段(这样就可以看到)并添加了一行代码。 – rdelmar 2012-08-17 03:00:46

+0

看起来问题在于其他地方,我有一个允许用户选择其默认视图的设置 - 如果我将splitView设置为默认视图,那么分割位于中心。如果我将另一个视图设置为主视图,并使用splitView一切正常工作,单击视图。任何想法可能会导致这种情况? – arooo 2012-08-17 03:37:14

2

NSSplitView需要初始非大小的边界以使其正确布局。 如果您的视图具有零大小,则不会显示预期的布局。

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

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

4

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

这是我如何定位我的分频器和子视图大小(SWIFT):

let subview: NSView = mySplitView.subviews[1] as NSView 
subview.setFrameSize(NSMakeSize(subview.frame.size.width, 100)) 
0

在视图中的类住房拆分视图

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

或任何你想要它开始。