2011-02-07 10 views
19

He estado tratando de hacer que mi aplicación Mac entre en pantalla completa ahora por un tiempo pero no puedo hacer que funcione. De acuerdo con el centro de desarrolladores de Apple, debería usar enterFullScreenMode:withOptions: que me da el método enterFullScreenMode no encontrado.¿Cómo hacer que una Mac OSX Cocoa aplicación a pantalla completa?

En todas partes, en google, parece que hay personas que tienen problemas para hacer que su aplicación sea a pantalla completa, entonces, ¿cuál es la manera de hacerlo funcionar?

Editar:

Por supuesto enterFullScreenMode es para el NSView y lo utilizaron en un NSWindow; no es la vista que quiero tener a pantalla completa, sino la ventana. No obstante, no puedo encontrar ninguna función para el NSWindow.

+0

haga que el contenidoViewView de NSWindow entre en pantalla completa. – hauntsaninja

+0

He estado leyendo (http://www.cocoabuilder.com/archive/cocoa/201569-nsview-enterfullscreenmode-withoptions-woes-window-levels.html), y parece que 'enterFullScreenMode: withOptions:' es casi inútil, si quieres hacer algo útil. Creo que vas a tener que usar algo de maldad de carbono, si quieres control sobre transiciones animadas, nivel de ventana, menú desplegable, etc. –

+4

simplemente usa '[[ventana contentview] enterFullScreenMode: [NSScreen mainScreen] withOptions : nil]; 'y puede hacer * todo * lo que puede hacer con un NSView normal, que incluye agregar capas de CoreAnimation y vistas/capas de OpenGL. – hauntsaninja

Respuesta

6

Como se menciona en the link Jonathan provided in the comments, enterFullScreen:withOptions: tiene una serie de inconvenientes que pueden hacer que quieras arrancarte el pelo. La mejor manera de hacer pantalla completa sigue siendo la antigua API CGDirectDisplay. Cocoa Dev Central tiene un article on fullscreen apps que cubre prácticamente todo lo que necesita saber.

Notarás que el artículo es bastante antiguo y las herramientas de desarrollo han cambiado mucho desde entonces (¡Project Builder! Ah, los buenos viejos tiempos), pero el código en sí seguirá funcionando.

20

Lion tiene algunas nuevas API para pantalla completa.

Para hacerlo con NSWindow, hacer esto

[window setCollectionBehavior: 
      NSWindowCollectionBehaviorFullScreenPrimary]; 

Para hacer esto con NSApplication hacer esto

[[NSApplication sharedApplication] 
     setPresentationOptions:NSFullScreenWindowMask]; 

Un poco más sobre él here.

12

Los desarrolladores modernos de Mac OS X (que usan el guión gráfico) solo necesitan hacer clic en su principal.storyboard, seleccionar NSWindow (no NSWindowController), usar el panel derecho para buscar el panel de atributos (el que está a la izquierda de la regla, se ve como una barra de arrastre) busque "Pantalla completa" y seleccione "Ventana principal" en lugar de su valor predeterminado "No compatible". También puede configurar ventanas auxiliares si eso es lo que desea.

No luches contra el cambio, usa el guión gráfico. Uno de nosotros ... uno de nosotros ...

+0

También puede hacer esto con los antiguos XIB (NIB). No necesitas guiones gráficos. ¿Cómo se manejan las aplicaciones basadas en documentos en guiones gráficos?Encontré los valores predeterminados realmente molestos, la forma en que el documento se dividió en una escena separada: agregó trabajo adicional, así que tuve que cablear el documento a mis controladores de vista en código, por lo que el guión gráfico se sentía incompleto. Para aplicaciones con iOS Todavía realizo principalmente vistas en código, ya que no soy partidario de los segues y soy mucho más eficiente en el código. Para las aplicaciones de Mac, estoy tendiendo a usar NIB, pero aún necesito escribir algún código de vista. – Joel

+0

@Ethan, no puede ver el valor No admitido, ¿la pantalla completa es obligatoria ahora? –

0
[self.view setFrame:[[NSScreen mainScreen] visibleFrame]]; 
Cuestiones relacionadas