cocoa - una - macbook air no detecta monitor externo
Visualice la pantalla completa de os x window en el monitor secundario usando Cocoa (3)
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 pueda 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.
Primero, determine qué pantalla desea usar repitiendo sobre [pantallas de 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 desee google CGDisplayCapture () también.
Puede llamar al enterFullScreenMode:withOptions:
de NSView
para lograr el comportamiento deseado.
Vea la documentación de Apple .
Lea aquí y aquí para conocer las opciones que se pueden suministrar a este método.
Puede usar [NSScreen screens]
para obtener la lista de pantallas disponibles. Mira aquí para más detalles.
Las animaciones de la ventana de pantalla completa son entrecortadas y no se ven bien en mi opinión. 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 conectar esto al elemento de menú a pantalla completa en el menú Ventana (después de insertarlo en su plumín), pero asegúrese de cambiar la acción que el elemento de menú activa a su alternarMyViewFullScreen:. O puede invocar toggleMyViewFullScreen mediante programación o cuando se carga su aplicación.