使用全屏mac app。我正在使用webView显示一些天气相关的信息。无法向主屏幕上显示的所有连接的监视器屏幕显示相同的webView内容。(不是使用Airplay-mirroring
)。
目前我只能设置其他显示器的壁纸。通过使用([NSScreen屏幕])
有人可以告诉我什么吗?感谢。
答案 0 :(得分:1)
这很简单。我搜索了许多相关的东西,比如“CGDisplayCapture”和“CGShieldingWindowLevel()”,但在我的情况下没有必要这样做。
1 ..下面的行将为您提供所有连接的屏幕
for (NSScreen *screen in [NSScreen screens]) { }
2 ..现在找到屏幕尺寸,因为连接的显示器可能具有与当前屏幕不同的屏幕尺寸。并使用当前屏幕和当前屏幕大小分配一个新窗口作为参数 -
// Draw a new window to fill the screen
NSRect screenRect = CGRectMake(0, 0, screen.frame.size.width , screen.frame.size.height);
secondaryMonitorWindow = [[NSWindow alloc] initWithContentRect:screenRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO screen:screen];
3 ..在我的情况下,桌面图标应该在窗口上可见,所以我将窗口级别设置为kCGDesktopWindowLevel。并使这个窗口“makeKeyAndOrderFront”。
4 ..我们无法将任何视图作为子视图添加到多个窗口。新窗口需要与我的主屏幕窗口相同的视图。所以我用这个 -
创建了相同视图的副本 id copyOfView = [NSKeyedUnarchiver unarchiveObjectWithData:[NSKeyedArchiver archivedDataWithRootObject:self.webView]];
5 ..为此视图指定相同的屏幕尺寸框架并将其添加到新窗口。
[copyOfView setFrame:screenRect];
[secondaryMonitorWindow.contentView addSubview:(WebView*)copyOfView];
完成了。现在对两个显示进行相同的更改,必须对两个窗口对象进行更改。