2008-12-30 9 views
12

Ich arbeite an einer Cocoa Mac App, wo ich ein Fenster/Ansicht auf einem sekundären Monitor im Vollbildmodus anzeigen muss. Ich weiß, wie man ein Fenster erstellt, das auf den sekundären Monitor gezogen werden kann, aber ich wollte das Fenster programmatisch erstellen und es auf dem externen Monitor bildschirmfüllend machen. Danke für die Hilfe.OS X Fenster Vollbild auf dem sekundären Monitor mit Cocoa anzeigen

Antwort

12

Bestimmen Sie zuerst, welchen Bildschirm Sie verwenden möchten, indem Sie über [NSScreen-Bildschirme] iterieren.

erstellen Vollbild-Fenster mit:

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()]; 

Vielleicht möchten CGDisplayCapture() als auch an Google.

+0

Danke, das hat super funktioniert. Da ich versuchte, auf den sekundären Bildschirm auszugeben, habe ich [window setLevel: NSStatusWindowLevel] verwendet; – Austin

4

Sie können die enterFullScreenMode:withOptions: Methode von NSView aufrufen, um das gewünschte Verhalten zu erreichen.

Siehe Apple's documentation.

Lesen Sie here und here für die Optionen, die für diese Methode bereitgestellt werden können.

Sie können [NSScreen screens] verwenden, um die Liste der verfügbaren Bildschirme zu erhalten. Details finden Sie unter here.

+0

Danke für die Hilfe. Für das, was ich versucht habe, denke ich, dass die erste Lösung am besten für mich funktionieren wird, aber ich werde diese Vollbildansicht im Auge behalten müssen. – Austin

0

Die Vollbildfensteranimationen sind abgehackt und sehen meiner Meinung nach nicht gut aus. Die Vollbildansicht ist viel flüssiger.

Try this:

- (void)toggleMyViewFullScreen:(id)sender 
{ 
    if (myView.inFullScreenMode) { 
     [myView exitFullScreenModeWithOptions:nil]; 
    } else { 
     NSApplicationPresentationOptions options = 
      NSApplicationPresentationHideDock |  
      NSApplicationPresentationHideMenuBar; 

     [myView enterFullScreenMode:[NSScreen mainScreen] withOptions:@{ 
      NSFullScreenModeApplicationPresentationOptions : @(options) }]; 
                       }]; 
    } 
} 

Sie können diesen Artikel mit dem Vollbild-Menü verbinden im Menü Fenster (danach in der Spitze Einfügen) aber sicher sein, um die Aktion zu ändern, dass der Menüpunkt Feuer auf Ihre toggleMyViewFullScreen :. Oder Sie können toggleMyViewFullScreen programmgesteuert aufrufen oder wenn Ihre App geladen wird.