在 macOS 开发中,NSView 是用于构建用户界面的基本组件。当应用程序进入全屏模式时,菜单栏通常会被隐藏,以便为用户提供更大的屏幕空间。退出全屏模式后,恢复菜单栏的功能是确保用户体验流畅的重要部分。
在某些情况下,退出全屏模式后,菜单栏可能不会自动恢复显示。
这可能是由于应用程序的状态管理不当,或者是 macOS 系统的全屏模式处理机制导致的。
可以通过监听全屏状态的变化,并在退出全屏时手动恢复菜单栏的显示。以下是一个示例代码,展示了如何在 Swift 中实现这一功能:
import Cocoa
class ViewController: NSViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 监听全屏状态变化
NotificationCenter.default.addObserver(self, selector: #selector(fullScreenChanged), name: NSWindow.didEnterFullScreenNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(fullScreenChanged), name: NSWindow.didExitFullScreenNotification, object: nil)
}
@objc func fullScreenChanged(notification: Notification) {
if let window = notification.object as? NSWindow {
if window.styleMask.contains(.fullSizeContentView) {
// 进入全屏
window.collectionBehavior = [.fullScreenPrimary]
} else {
// 退出全屏
window.collectionBehavior = []
// 恢复菜单栏显示
NSApplication.shared.presentationOptions = [.autoHideMenuBar, .autoHideDock]
}
}
}
deinit {
// 移除监听器
NotificationCenter.default.removeObserver(self)
}
}
NotificationCenter
监听 NSWindow.didEnterFullScreenNotification
和 NSWindow.didExitFullScreenNotification
通知。fullScreenChanged
方法中,根据窗口的全屏状态调整 collectionBehavior
属性。NSApplication.shared.presentationOptions
以确保菜单栏重新显示。通过这种方式,可以确保在退出全屏模式后,菜单栏能够正确恢复显示,提升用户体验。
没有搜到相关的沙龙