我正在尝试制作一个全屏视频播放器,在第二台显示器上启动,播放视频,然后退出。
我真的不明白为什么这么难,但我已经尝试了几乎所有我能想到的东西,包括我在任何答案中找到的关于移动窗户或全屏幕的所有内容。
1)将窗框设置为第二个屏幕的框架不会可靠地移动它。
E.g。
if let screen = NSScreen.screens()?[1] {
let frame = screen.frame
window.setFrame(frame, display: true, animate: true)
}
可能会或可能不会将窗口移动到第二个屏幕。如果我设置animate:false,它永远不会。
2)执行self.view.enterFullScreenMode(secondScreen,withOptions:options)不起作用我最终在主屏幕上出现了一个奇怪的浮动窗口。如果我在主屏幕上输入fullScreenMode,它将完全全屏显示。
if let screen = NSScreen.screens()?[1] {
let presOptions:NSApplicationPresentationOptions = [
.fullScreen,
.hideDock,
.hideMenuBar,
.autoHideToolbar
]
self.view.enterFullScreenMode(screen, withOptions: [NSFullScreenModeApplicationPresentationOptions: presOptions,
NSFullScreenModeAllScreens: false])
}
有人知道我到底做错了什么吗?
我还尝试在applicationDidFinishLaunching中使用window.toggleFullScreen(nil) - 这似乎可以在我的一台计算机上运行,但在另一台计算机上它在另一个空间运行应用程序,但从未将该空间设置为可见。
答案 0 :(得分:2)
仅使用setFrameOrigin对我有用,例如:
if let screen = NSScreen.screens()?[1] {
window.setFrameOrigin(screen.visibleFrame.origin)
}
价: https://developer.apple.com/documentation/appkit/nsview/1483283-setframeorigin
关于在全屏模式下设置窗口。如果你是从视图中做到的(我认为),你可以试试这个:
override func viewDidAppear() {
super.viewDidAppear()
self.view.window?.styleMask.insert(.fullScreen)
self.view.window?.styleMask.insert(.fullSizeContentView)
self.view.window?.level = Int(CGWindowLevelForKey(.maximumWindow))
}