我有一个音乐播放器的macOS应用程序窗口,带有几个控件和一个播放列表- NSTableView。当窗口大小调整到某个阈值以下时,我希望自动隐藏播放列表。
我是否可以单独使用自动布局(类似于iOS上的“安装”选项/大小类)来实现这一点,或者我是否必须编写代码来监听窗口调整大小事件、评估大小并手动隐藏播放列表?
发布于 2018-01-13 21:37:53
您不能仅使用自动布局来完成此操作。
如果使用NSSplitViewController
,并且将包含表视图的NSSplitViewItem
的behavior
设置为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)
https://stackoverflow.com/questions/48244196
复制