Muestra la pantalla completa de la ventana de OS X en el monitor secundario usando Cocoa
-
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.
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.