使用Swift设置NSSplitViewController窗格的宽度

时间:2016-12-22 20:38:14

标签: macos nssplitview nssplitviewcontroller

Xcode 8.2.1,Swift 3.0.2,macOS 10.12

我的NSSplitViewController有3个窗格(请注意NS;这是 Mac 应用。

我试图将最左侧的窗格设置为始终具有固定宽度,而不是可调整大小。我尝试过以下方法:

  • 由于某些原因,在窗格的子视图的Storyboard编辑器中无法使用自动布局约束。
  • 设置constrainMaxCoordinateconstrainMinCoordinate无效。

有没有其他人最近才开始工作?有很多关于这个主题的文章,但他们的工具集已有几年的历史了,他们的建议都没有对我有用。谢谢!

enter image description here

2 个答案:

答案 0 :(得分:8)

我终于弄明白了。我必须以编程方式设置自动布局约束。在故事板编辑器(Xcode 8.1)中为NSSplitViewItem设置约束不可用

我是这样做的:

//This is my SplitViewController subclass
class MainSplitVC: NSSplitViewController {

  //Outlet to the menu pane
  @IBOutlet weak var menuPane: NSSplitViewItem!

  override func viewDidLoad() {
    super.viewDidLoad()

    //Hard-code the width of the menu pane
    NSLayoutConstraint(item: menuPane.viewController.view, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 80).isActive = true
  }
}

我希望能帮到别人。

答案 1 :(得分:0)

通常,您应该为子视图的子视图设置布局约束。

例如,如果您在左窗格中有一个NSOutlineView,只需将其宽度约束设置为固定值即可。

窗格视图的大小由其子视图的约束条件计算得出。

enter image description here enter image description here