将macOS应用程序最大化为全屏模式时,默认情况下菜单栏为隐藏:
但是,当用户将光标移到屏幕顶部时,菜单栏会再次滑入。除此之外,窗口标题栏中还会显示用于调整窗口大小和关闭窗口的彩色按钮:
在我的情况下(窗口的titleVisibility
设置为hidden
),这会导致工具栏按钮移动。为了防止这种情况发生(并让他们保持位置),我需要在插入动画期间更新工具栏的布局。
不幸的是,当菜单栏和按钮即将滑入(以及带有哪个动画)时,我找不到任何通知窗口控制器的通知或委托方法。
有没有办法检测到这一点?
答案 0 :(得分:0)
这是我找到的最好的解决方案,以及如何在应用程序中使用它。 将其添加到您的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)
}