如何设置 NSSplitView 的起始位置?
我发现最接近它的东西是 setPosition
//Set splitView position.
[splitView setPosition:330 ofDividerAtIndex:0];
不过,这似乎没有任何作用,我的拆分视图仍然从中间的分隔线开始。
有任何想法吗?
如何设置 NSSplitView 的起始位置?
我发现最接近它的东西是 setPosition
//Set splitView position.
[splitView setPosition:330 ofDividerAtIndex:0];
不过,这似乎没有任何作用,我的拆分视图仍然从中间的分隔线开始。
有任何想法吗?
您不设置分隔线的位置,而是设置 NSSplitView 的子视图的大小。然后分隔器会自动重新定位。
这就是我定位分隔线和子视图大小的方式(快速):
let subview: NSView = mySplitView.subviews[1] as NSView
subview.setFrameSize(NSMakeSize(subview.frame.size.width, 100))
NSSplitView
需要初始的非大小范围才能正确布局。如果您的视图大小为零,则它不会显示预期的布局。
最好的方法是提供非零布局(这是 IB 所做的),但有时这是不可能的。
如果您不能提供非零大小,那么我认为您必须提供适当的- (void)splitView:(NSSplitView *)splitView resizeSubviewsWithOldSize:(NSSize)oldSize
委托方法实现来自己手动布局所有内容。(这是我目前的最佳做法)
在包含拆分视图的视图类中
override func viewWillAppear() {
self.mySplitView.setPosition(120, ofDividerAtIndex: 0)
}
或您希望它开始的任何地方。
也许这就是中心?如果 splitView 正确连接到您的拆分视图,则该代码应该可以工作。在尝试设置分隔线的位置之前,您可能应该记录 [splitView minPossiblePositionOfDividerAtIndex:0] 和 [splitView maxPossiblePositionOfDividerAtIndex:0],以便了解可能的值。