我正在开发一款Cocoa Mac应用程序,需要在第二个显示器上全屏显示窗口/视图。
我知道如何创建一个可拖动到第二个显示器的窗口,但是我希望可以通过编程方式创建窗口并使其在外部显示器上全屏显示。
我正在开发一款Cocoa Mac应用程序,需要在第二个显示器上全屏显示窗口/视图。
我知道如何创建一个可拖动到第二个显示器的窗口,但是我希望可以通过编程方式创建窗口并使其在外部显示器上全屏显示。
首先,通过迭代 [NSScreen screens]
来确定要使用哪个屏幕。
使用以下代码创建全屏窗口:
NSScreen *screen = /* from [NSScreen screens] */
NSRect screenRect = [screen frame];
NSWindow *window = [[NSWindow alloc] initWithContentRect:screenRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered
defer:NO
screen:screen];
[window setLevel: CGShieldingWindowLevel()];
你可能也想尝试谷歌搜索一下 CGDisplayCapture()
。
我认为全屏窗口动画不够流畅,效果也不好。全屏视图要更加平滑。
试试这个:
- (void)toggleMyViewFullScreen:(id)sender
{
if (myView.inFullScreenMode) {
[myView exitFullScreenModeWithOptions:nil];
} else {
NSApplicationPresentationOptions options =
NSApplicationPresentationHideDock |
NSApplicationPresentationHideMenuBar;
[myView enterFullScreenMode:[NSScreen mainScreen] withOptions:@{
NSFullScreenModeApplicationPresentationOptions : @(options) }];
}];
}
}
您可以将此连接到窗口菜单中的全屏菜单项(在将其插入到nib中后),但请确保更改菜单项触发的操作为toggleMyViewFullScreen:。或者,您可以在编程方式下调用toggleMyViewFullScreen,或者在应用程序加载时调用。