gpt4 book ai didi

swift - 使用 Swift 3 在 macOS 10.12 的第二个屏幕上使用 NSWindow 全屏显示?

转载 作者:行者123 更新时间:2023-11-28 08:08:39 34 4
gpt4 key购买 nike

我正在尝试全屏显示第二个屏幕上的第二个窗口,但我仍然看到菜单栏。

这是我的代码:

let second_screen = NSScreen.screens()?[1]
let window = NSWindow(contentRect: (second_screen?.frame)!, styleMask: .fullScreen, backing: .buffered, defer: true, screen: second_screen)
self.window_controller = NSWindowController(window: window)
window.collectionBehavior = .fullScreenAuxiliary
window_controller?.showWindow(self)
window.toggleFullScreen(true)

有没有人对此有任何好运?

编辑 1:

我添加了这一行:

NSApp.presentationOptions = [.fullScreen, .hideDock, .autoHideMenuBar]

我收到了这个警告:

setPresentationOptions called with NSApplicationPresentationFullScreen when there is no visible fullscreen window; this call will be ignored.

编辑 2:

我切换到这个方法:

HOWTO: Create a Locked Down Fullscreen Cocoa Application and Implement NSLayoutConstraints using Swift

let presOptions: NSApplicationPresentationOptions = [.hideDock, .hideMenuBar]
let optionsDictionary = [NSFullScreenModeApplicationPresentationOptions: NSNumber(value: presOptions.rawValue)]
self.fullscreen_view?.enterFullScreenMode((NSScreen.screens()?[1])!, withOptions: optionsDictionary)

View 变成全屏但不显示内容,只是灰色。

编辑 3:

我关闭了 NSFullScreenModeAllScreens,现在它可以正常工作了:

let optionsDictionary = [NSFullScreenModeApplicationPresentationOptions: NSNumber(value: presOptions.rawValue), NSFullScreenModeAllScreens: false]

现在唯一的问题是菜单栏和停靠栏不会出现在第一个屏幕上。

最佳答案

对我来说,enterFullScreenMode 似乎只有在 View “显示”后调用时才能正常工作。

如果我在 func applicationDidBecomeActive(_ notification: Notification) {/* here */} 中调用它(或者也可以使用 Timer.scheduledTimer) .

关于swift - 使用 Swift 3 在 macOS 10.12 的第二个屏幕上使用 NSWindow 全屏显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44372887/

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