2014-01-24 68 views
5

我有一个NSSplitView使用自动布局来定位它里面的两个子视图。NSSplitView初始分隔位置?

一切都很好,但我想将分隔线的初始位置设置为一个恒定值(300像素)的美学原因。我没有使用接口生成器。

如果我做的是[_splitView setPosition:300 ofDividerAtIndex:0];,我看不到任何效果,如果在此之后再添加[_splitView adjustSubviews]即可。

任何提示?

+0

你能发布更多关于你应用的约束的信息吗?带有自动布局约束的NSScrollView是一个灰色区域(至少对我来说),我还没有设法找到任何指导。如果你消除了你的约束,分频器会移动,会发生什么? –

+0

是不是将分隔线的位置设置为等同于在左侧设置视图的宽度?尝试将左视图的初始大小设置为300. – NSAdam

+0

可能出现[NSSplitView divider的开始位置]的重复(http://stackoverflow.com/questions/11995073/starting-position-of-nssplitview-divider) – Eonil

回答

4

我遇到了同样的问题。看起来在将子视图添加到splitView后立即调用没有效果。

我在调用之前等了一会儿才解决了这个问题。这里是swift中的示例代码:

func delay(delay:Double, closure:()->()) { 
    let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))) 
    dispatch_after(time, dispatch_get_main_queue(), closure) 
} 

delay(0.05) { 
    splitView.setPosition(300, ofDividerAtIndex: 0) 
} 
+2

您应该调用'viewWillAppear'中的'setPosition:ofDividerAtIndex:'函数而不是'viewDidLoad'。 –

+1

这样一个奇怪的解决方案 – surfrider

3

我遇到了同样的问题,但我解决了它从viewDidAppear调用setPosition。希望这可以帮助。

- (void)viewDidAppear { 
    [self.splitView setPosition:300 ofDividerAtIndex:0]; 
}