2014-06-17 15 views
1

使用全屏mac应用程序。我使用webView显示一些天气相关的信息。无法向所有连接的监视器屏幕显示相同的WebView内容,例如它出现在主屏幕上(不使用Airplay-mirroring)。 目前我只能设置其他显示器的壁纸。通过使用([NSScreen屏幕]) 有人请告诉我一些东西?谢谢。Mac osx - 如何向所有连接的显示器显示相同的应用程序内容

+0

你不应该这样做,因为它会干扰我使用其他显示器。我有两台显示器,因为我希望能够在全屏模式下运行两个不同的应用程序,每个显示器上一个。除此之外,创建两个窗口。但是,如果人们不喜欢它,不要感到惊讶。 – gnasher729

+0

搜索abt后,我发现我们可以使用“Mini DisplayPort to VGA Adapter”连接多台显示器。在拥有多个屏幕后,我们可以将任何在主屏幕中打开的窗口放置到其他显示器上。但不知道如何以编程方式使用辅助监视器。我们可以通过代码打开辅助监视器上的任何窗口 – Yogendra

回答

1

这很简单。我搜索了很多相关的东西,比如“CGDisplayCapture”和“CGShieldingWindowLevel()”,但在我的情况下没有必要这样做。

1 ..下面一行会给你所有连接的屏幕

for (NSScreen *screen in [NSScreen screens]) { } 

2 ..现在发现屏幕尺寸,因为连接显示器时可能有不同的屏幕尺寸,那么当前屏幕。或Alloc与当前屏幕和当前屏幕尺寸的新窗口,parameter--

// 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]; 

其完成。现在对两个显示器都进行相同的更改,必须对两个窗口对象进行更改。

相关问题