gpt4 book ai didi

cocoa - 当 NSWindow 的标题栏在全屏模式下可见时如何收到通知?

转载 作者:行者123 更新时间:2023-12-03 17:46:41 29 4
gpt4 key购买 nike

将 macOS 应用最大化至全屏模式时,菜单栏默认隐藏:

Hidden Title Bar

但是,当用户将光标移动到屏幕顶部时,菜单栏会再次滑入。除此之外,用于调整窗口大小和关闭窗口的彩色按钮出现在窗口的标题栏中:

Visible Title Bar

就我而言(窗口的 titleVisibility 设置为 hidden),这会导致工具栏按钮发生移动。为了防止这种情况(并让它们保持其位置),我需要在滑入动画期间更新工具栏布局。

不幸的是,我找不到任何通知或委托(delegate)方法来通知窗口 Controller 何时菜单栏和按钮即将滑入(以及使用哪种动画)。

有办法检测到这一点吗?

最佳答案

这是我找到的最佳解决方案以及我如何在我的应用程序中使用它。将其添加到您的 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)

}

关于cocoa - 当 NSWindow 的标题栏在全屏模式下可见时如何收到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54960833/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com