-1

我正在用 swift 编写一个 MacOS 应用程序。窗口中的主要布局如下:

应用程序的布局

NSStackView 有一个侧边栏(NSTableView)和一个 NSView。我想要达到的目标在这里列出:

  1. 更改窗口大小时,侧边栏的宽度是固定的。
  2. 当窗口宽度小于WIDTH_THRESHOLD时,sideBar 被隐藏。

问题是_

  1. 对于 Target 1,sideBar 和 NSView 的约束如下,但它不起作用,sideBar 的宽度仍然发生变化。

约束

  1. 对于目标 2,该项目具有 aNSWindowController和 a NSViewController。我可以在 中收听窗口大小NSWindowController,但我不知道如何将此消息传输NSViewController到隐藏侧边栏。

请注意,NSStackView 具有类似的属性,Hugging Priority在尺寸检查器中,我可以通过设置这些属性来实现目标吗(如下图)?Clipping Resistance PriorityVisibility Priorities

属性

4

2 回答 2

0
  1. 您是否限制了侧边栏的宽度?如果您还没有,可能会发生NSView自动调整大小并推动侧边栏的情况。更改红色箭头不会创建实际约束,只会更改调整大小规则。

  2. NSWindowController就像你说的那样,听你的窗口大小。只要您在该窗口类中引用了可用的侧栏(例如,您可以访问包含它的视图控制器),您就可以设置sideBar.isHidden = true窗口何时变得太小,以及false窗口何时再次变得足够大。

于 2020-01-09T04:12:42.993 回答
0
  1. 最后,我使用 NSSplitView 作为侧边栏,它更容易。

  2. NSSplitViewDelegate用来听SplitView的宽度变化。

于 2020-01-10T02:46:21.633 回答