Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
macOS上的自动布局:窗口大小低于阈值时隐藏控件_Macos_Cocoa_Autolayout_Interface Builder - Fatal编程技术网

macOS上的自动布局:窗口大小低于阈值时隐藏控件

macOS上的自动布局:窗口大小低于阈值时隐藏控件,macos,cocoa,autolayout,interface-builder,Macos,Cocoa,Autolayout,Interface Builder,我有一个用于音乐播放器的macOS应用程序窗口,其中有几个控件和一个播放列表-NSTableView。当窗口大小调整到某个阈值以下时,我想自动隐藏播放列表 我可以单独使用autolayout(类似于iOS上的“安装”选项/大小类)来实现这一点,还是必须编写代码来侦听窗口大小调整事件、评估大小并手动隐藏播放列表?您不能单独使用autolayout 如果使用NSSplitViewController,并将包含表视图的NSSplitViewItem的行为设置为NSSplitViewItemBehavi

我有一个用于音乐播放器的macOS应用程序窗口,其中有几个控件和一个播放列表-NSTableView。当窗口大小调整到某个阈值以下时,我想自动隐藏播放列表


我可以单独使用autolayout(类似于iOS上的“安装”选项/大小类)来实现这一点,还是必须编写代码来侦听窗口大小调整事件、评估大小并手动隐藏播放列表?

您不能单独使用autolayout

如果使用
NSSplitViewController
,并将包含表视图的
NSSplitViewItem
行为设置为
NSSplitViewItemBehaviorSidebar
(Swift:
NSSplitViewItem.behavior.sidebar
),并且您将拆分视图控制器的
minimumThicknessForInlineSidebars
设置为表视图的最小所需宽度,那么当窗口变得太窄时,拆分视图控制器将负责隐藏侧栏

请看一个例子。这是GalleryWindowController.swift中的关键部分:

    splitViewController.minimumThicknessForInlineSidebars = 992.0
    splitViewController.view.wantsLayer = true

    // Create a sidebar SplitViewItem. This has metrics and behaves like system standard sidebars.
    let sidebarSplitViewItem = NSSplitViewItem(sidebarWithViewController: self.sidebarController)
    splitViewController.addSplitViewItem(sidebarSplitViewItem)