NSSplitView分隔符的起始位置

时间:2012-08-16 20:37:59

标签: objective-c macos swift nsview nssplitview

如何设置NSSplitView的起始位置?

我发现的最接近的事情就是setPosition

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

这似乎没有做任何事情,我的splitview仍然从中间的分隔符开始。

任何想法?

4 个答案:

答案 0 :(得分:5)

您没有设置分隔符的位置,您可以设置NSSplitView子视图的大小。然后自动重新定位分隔符。

这就是我如何定位分区和子视图的大小(在swift中):

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

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