NSSplitView初始分隔符位置?

use*_*829 5 cocoa cocoa-touch

我有一个NSSplitView,它使用autolayout将两个子视图放在其中.

一切都很好,但出于美观原因,我想将分频器的初始位置设置为恒定值(300像素).我没有使用界面构建器.

如果我这样做[_splitView setPosition:300 ofDividerAtIndex:0];,我认为没有效果,如果我[_splitView adjustSubviews]在那之后立即添加一个电话,同样的事情.

有小费吗?

Tyl*_*ong 5

我遇到了同样的问题。setPosition如果在将子视图添加到splitView之后立即调用,似乎没有任何效果。

我通过在调用之前稍等片刻来解决问题setPosition。这是迅速的示例代码:

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)
}
Run Code Online (Sandbox Code Playgroud)

  • 您应该在viewWillAppear中而不是viewDidLoad中调用setPosition:ofDividerAtIndex:函数。 (2认同)