将macOS应用程序最大化为全屏模式时,默认情况下隐藏菜单栏:
但是,当用户将光标移动到屏幕顶部时,菜单栏会再次滑入。除此之外,用于调整窗口大小和关闭窗口的彩色按钮显示在窗口的标题栏中:
在我的情况下(窗口的titleVisibility
设置为hidden
),这会导致工具栏按钮移动。为了防止这种情况(并让它们保持位置),我需要在幻灯片放映动画期间更新工具栏布局。
不幸的是,当菜单栏和按钮即将滑入(以及使用哪个动画)时,我找不到通知窗口控制器的任何通知或委托方法。
有没有办法检测到这个?
这是我找到的最佳解决方案以及我如何在我的应用中使用它。将此添加到您的NSWindowController,但您可能需要调整它以满足您的需求。
更新:我只看到它只在没有工具栏的情况下工作。
var observer:NSObjectProtocol?
func windowDidEnterFullScreen(_ notification: Notification) {
observer = notificationCenter.addObserver(forName: NSWindow.didChangeOcclusionStateNotification, object: nil, queue: OperationQueue.main) { (notification) in
if let window = notification.object as? NSWindow{
if window.occlusionState == NSWindow.OcclusionState.init(rawValue: 8194){
print("window title visible")
} else {
print("window title hidden")
}
}
}
}
func windowDidExitFullScreen(_ notification: Notification) {
notificationCenter.removeObserver(observer as Any)
}