我想在辅助监视器上全屏显示在故事板中创建的NSWindow
。以下代码导致窗口显示在主屏幕/主屏幕上。 Y原点是好的,但X原点是0,它应该是-1680。下面的代码在Yosemite之前有效。
NSScreen *screen = [[NSScreen screens] objectAtIndex:2];
NSRect mainDisplayRect = [screen frame];
[PresenterWindow setFrame: mainDisplayRect display:YES animate:YES];
[PresenterWindow makeKeyAndOrderFront:sender];
[PresenterWindow setLevel: CGShieldingWindowLevel()];
我也尝试过以下相同的结果:
[[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, [screen frame].size.width, [screen frame].size.height)
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO
screen:screen];
请告知我如何解决这个问题。
我尝试过其他一些问题的解决方案:
enterFullScreenMode:withOptions:
方法。我有一些新观察:
如果我在我的NSWindow
的故事板中激活“启动时启动”,则在我的辅助监视器上全屏查看该窗口。如果我然后执行orderOut
并运行上面的代码,则会以正确的大小查看窗口,但是在我的主/主屏幕上。窗口未激活为“关闭时释放”。因此,当我取消激活“启动时启动”时,将再次在主/主屏幕中查看具有辅助屏幕大小的窗口。
答案 0 :(得分:2)
几天后我开始工作了:
故事板中的NSWindow标有" Start at Startup"
在applcationDidFinishLaunching中我写了以下内容:
[PresenterWindow setLevel: NSNormalWindowLevel];
[PresenterWindow orderOut:self];
要打开全屏我使用了这个:
NSScreen *screen = [[NSScreen screens] objectAtIndex:1];
NSRect mainDisplayRect = [screen frame];
[PresenterWindow setFrame: mainDisplayRect display:YES animate:YES];
[PresenterWindow setLevel: CGShieldingWindowLevel()];
[PresenterWindow makeKeyAndOrderFront:screen];
关闭全屏并能够再次正确打开全屏:
[PresenterWindow setLevel: NSNormalWindowLevel];
[PresenterWindow orderOut:(sender)];