【问题标题】:NSSplitView initial divider position?NSSplitView 初始分隔线位置?
【发布时间】:2014-01-24 23:41:15
【问题描述】:

我有一个 NSSplitView,它使用自动布局来定位其中的两个子视图。

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

如果我执行[_splitView setPosition:300 ofDividerAtIndex:0];,我看不到任何效果,如果我在此之后添加一个[_splitView adjustSubviews] 调用也是一样的。

有什么建议吗?

【问题讨论】:

  • 你能发布更多关于你应用了哪些约束的信息吗?具有自动布局约束的 NSScrollView 有点灰色地带(至少对我而言),我还没有找到任何指导方针。如果移除约束会发生什么,分隔线会移动吗?
  • 设置分隔线的位置不等于设置左侧视图的宽度吗?尝试将左视图的初始大小设置为 300。

标签: cocoa-touch cocoa


【解决方案1】:

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

我通过在调用setPosition 之前稍等片刻来解决问题。这是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)
}

【讨论】:

  • 你应该在viewWillAppear而不是viewDidLoad中调用setPosition:ofDividerAtIndex:函数。
  • 这么奇怪的解决方案
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    相关资源
    最近更新 更多