如何将 NSApplicationPresentationOptions 应用于应用程序?
How to apply the NSApplicationPresentationOptions to an application?
我试图让应用程序以演示模式启动,同时禁用 Dock、菜单栏、进程切换等。我为这些设置设置了变量,但现在我不知道如何实际应用这些设置到应用程序。这是我到目前为止的代码:
let presOptions: NSApplicationPresentationOptions = [
.HideDock , // Dock is entirely unavailable. Spotlight menu is disabled.
// .AutoHideMenuBar , // Menu Bar appears when moused to.
// .DisableAppleMenu , // All Apple menu items are disabled.
.DisableProcessSwitching , // Cmd+Tab UI is disabled. All Exposé functionality is also disabled.
.DisableForceQuit , // Cmd+Opt+Esc panel is disabled.
.DisableSessionTermination , // PowerKey panel and Restart/Shut Down/Log Out are disabled.
.DisableHideApplication , // Application "Hide" menu item is disabled.
// .AutoHideToolbar ,
.FullScreen
]
我相信后面的那行是:
let optionsDictionary = [NSFullScreenModeApplicationPresentationOptions: presOptions]
但在那之后我完全迷路了。谢谢任何帮助,我们将不胜感激!
假设你有一个 NSWindow
和一个 NSViewController
,你可以这样做:
class ViewController: NSViewController {
override func viewWillAppear() {
let presentationOptions: NSApplicationPresentationOptions = [
.HideDock , // Dock is entirely unavailable. Spotlight menu is disabled.
.DisableProcessSwitching , // Cmd+Tab UI is disabled. All Exposé functionality is also disabled.
.DisableForceQuit , // Cmd+Opt+Esc panel is disabled.
.DisableSessionTermination , // PowerKey panel and Restart/Shut Down/Log Out are disabled.
.DisableHideApplication , // Application "Hide" menu item is disabled.
.FullScreen
]
if let screen = NSScreen.mainScreen() {
view.enterFullScreenMode(screen,
withOptions: [NSFullScreenModeApplicationPresentationOptions:
NSNumber(unsignedLong: presentationOptions.rawValue)])
}
}
}
尚不完全清楚 viewDidAppear
和 viewWillAppear
中哪一个是执行此操作的最佳位置。视觉上似乎没有什么区别。
Stefan Arentz 对 Swift 4.2
的回答更新了代码
let presentationOptions: NSApplication.PresentationOptions = [
.hideDock , // Dock is entirely unavailable. Spotlight menu is disabled.
.disableProcessSwitching , // Cmd+Tab UI is disabled. All Exposé functionality is also disabled.
.disableForceQuit , // Cmd+Opt+Esc panel is disabled.
.disableSessionTermination , // PowerKey panel and Restart/Shut Down/Log Out are disabled.
.disableHideApplication , // Application "Hide" menu item is disabled.
.fullScreen
]
view.enterFullScreenMode(screen, withOptions: [NSView.FullScreenModeOptionKey.fullScreenModeApplicationPresentationOptions:presentationOptions.rawValue])
此外,对我来说,只有从 applicationDidBecomeActive
调用它才能正常工作。
我试图让应用程序以演示模式启动,同时禁用 Dock、菜单栏、进程切换等。我为这些设置设置了变量,但现在我不知道如何实际应用这些设置到应用程序。这是我到目前为止的代码:
let presOptions: NSApplicationPresentationOptions = [
.HideDock , // Dock is entirely unavailable. Spotlight menu is disabled.
// .AutoHideMenuBar , // Menu Bar appears when moused to.
// .DisableAppleMenu , // All Apple menu items are disabled.
.DisableProcessSwitching , // Cmd+Tab UI is disabled. All Exposé functionality is also disabled.
.DisableForceQuit , // Cmd+Opt+Esc panel is disabled.
.DisableSessionTermination , // PowerKey panel and Restart/Shut Down/Log Out are disabled.
.DisableHideApplication , // Application "Hide" menu item is disabled.
// .AutoHideToolbar ,
.FullScreen
]
我相信后面的那行是:
let optionsDictionary = [NSFullScreenModeApplicationPresentationOptions: presOptions]
但在那之后我完全迷路了。谢谢任何帮助,我们将不胜感激!
假设你有一个 NSWindow
和一个 NSViewController
,你可以这样做:
class ViewController: NSViewController {
override func viewWillAppear() {
let presentationOptions: NSApplicationPresentationOptions = [
.HideDock , // Dock is entirely unavailable. Spotlight menu is disabled.
.DisableProcessSwitching , // Cmd+Tab UI is disabled. All Exposé functionality is also disabled.
.DisableForceQuit , // Cmd+Opt+Esc panel is disabled.
.DisableSessionTermination , // PowerKey panel and Restart/Shut Down/Log Out are disabled.
.DisableHideApplication , // Application "Hide" menu item is disabled.
.FullScreen
]
if let screen = NSScreen.mainScreen() {
view.enterFullScreenMode(screen,
withOptions: [NSFullScreenModeApplicationPresentationOptions:
NSNumber(unsignedLong: presentationOptions.rawValue)])
}
}
}
尚不完全清楚 viewDidAppear
和 viewWillAppear
中哪一个是执行此操作的最佳位置。视觉上似乎没有什么区别。
Stefan Arentz 对 Swift 4.2
的回答更新了代码let presentationOptions: NSApplication.PresentationOptions = [
.hideDock , // Dock is entirely unavailable. Spotlight menu is disabled.
.disableProcessSwitching , // Cmd+Tab UI is disabled. All Exposé functionality is also disabled.
.disableForceQuit , // Cmd+Opt+Esc panel is disabled.
.disableSessionTermination , // PowerKey panel and Restart/Shut Down/Log Out are disabled.
.disableHideApplication , // Application "Hide" menu item is disabled.
.fullScreen
]
view.enterFullScreenMode(screen, withOptions: [NSView.FullScreenModeOptionKey.fullScreenModeApplicationPresentationOptions:presentationOptions.rawValue])
此外,对我来说,只有从 applicationDidBecomeActive
调用它才能正常工作。