【发布时间】:2015-09-14 09:14:27
【问题描述】:
我想在辅助监视器上全屏显示在情节提要中创建的NSWindow。下面的代码导致窗口显示在主屏幕/主屏幕上。 Y 原点没问题,但 X 原点为 0,应为 -1680。下面的代码在优胜美地之前工作。
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];
请告诉我如何解决这个问题。
我尝试了其他一些问题的解决方案:
- Cocoa Open a fullscreen window on the second screen maintaining the app visible on the first - 无效 - 结果相同。
-
Display os x window full screen on secondary monitor using Cocoa - 不 - 不使用 NSView 的
enterFullScreenMode:withOptions:方法。
我有一些新的观察:
如果我在情节提要中为我的NSWindow 激活“启动时启动”,该窗口将在我的辅助监视器上全屏查看。如果我然后执行orderOut 并运行上面的代码,窗口将以正确的大小查看,但在我的主/主屏幕上。该窗口未激活为“关闭时释放”。因此,当我停用“启动时启动”时,将再次在主屏幕/主屏幕中以辅助屏幕的大小查看窗口。
【问题讨论】:
-
在订购之前尝试设置窗口级别。如果这不起作用,请尝试覆盖
-constrainFrameRect:toScreen:以仅返回传入的矩形。 -
谢谢你,肯,但我没有帮忙。我发现如果我在情节提要中为我的 NSWindow 激活“启动时可见”,它确实有效。如果我然后可编程命令窗口退出,那么下次运行初始脚本它又是错误的。
标签: cocoa