Muestra la pantalla completa de la ventana de OS X en el monitor secundario usando Cocoa

StackOverflow https://stackoverflow.com/questions/401240

  •  03-07-2019
  •  | 
  •  

Pregunta

Estoy trabajando en una aplicación Cocoa Mac donde necesito mostrar una ventana / vista en un monitor secundario, pantalla completa. Sé cómo crear una ventana que se puede arrastrar al monitor secundario, pero quería crear programáticamente la ventana y hacerla en pantalla completa en el monitor externo. Gracias por la ayuda.

¿Fue útil?

Solución

Primero, determine qué pantalla desea utilizar iterando sobre [Pantallas NSScreen].

Crea una ventana de pantalla completa con:

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

Es posible que también desees google CGDisplayCapture ().

Otros consejos

Puede llamar al enterFullScreenMode: withOptions: del NSView para lograr el comportamiento deseado.

Consulte documentación de Apple .

Lea here and aquí para las opciones que se pueden proporcionar a este método.

Puede usar [NSScreen screens] para obtener la lista de pantallas disponibles. Consulte aquí para más detalles.

En mi opinión, las animaciones de la ventana de pantalla completa están entrecortadas y no se ven bien. La vista de pantalla completa es mucho más suave.

Prueba esto:

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

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

Puede conectarlo al elemento de menú de pantalla completa en el menú Ventana (después de insertarlo en su plumilla), pero asegúrese de cambiar la acción que el elemento de menú dispara a su toggleMyViewFullScreen:. O puede invocar toggleMyViewFullScreen mediante programación o cuando se cargue su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top