5

Xcode 8.2.1、Swift 3.0.2、macOS 10.12

我有一个NSSplitViewController有 3 个窗格的(请注意NS;这是针对Mac应用程序的)。

我正在尝试将最左侧的窗格设置为始终具有固定宽度并且不可调整大小。我尝试了以下方法:

  • 出于某种原因,自动布局约束在窗格子视图的情节提要编辑器中不可用。
  • 设置constrainMaxCoordinateconstrainMinCoordinate没有工作。

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

在此处输入图像描述

4

2 回答 2

9

我终于想通了。我必须以编程方式设置自动布局约束。在情节提要编辑器(Xcode 8.1)NSSplitViewItem无法设置对 an 的约束。

我是这样做的:

//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
  }
}

我希望这对其他人有所帮助。

于 2016-12-24T23:30:33.017 回答
1

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

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

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

在此处输入图像描述 在此处输入图像描述

于 2019-01-06T10:48:55.840 回答