2012-07-27 31 views
7

Soy nuevo en el desarrollo de Mac OSx/Cocoa. Durante la creación de mi primera aplicación, me encontré con algunas cosas, y una de ellas es mi problema con el botón verde + que está destinado a hacer zoom.¿Cómo activar/desactivar el botón de zoom (botón verde +)?

Me gustaría saber si es posible establecer dinámicamente el comportamiento del botón de zoom de la ventana de la aplicación? ¿No estoy violando ninguna regla de las pautas de Apple?

Quiero especificar el comportamiento del botón según un usuario específico. Digamos, el usuario tiene permitido tener un botón de acercamiento, luego el botón debería estar habilitado; de lo contrario, deje el botón deshabilitado.

En este caso, cuando se inicia la aplicación, estoy comprobando si el usuario tiene permitido tener un botón de zoom habilitado. Desde aquí quiero personalizar el comportamiento de la ventana perteneciente al botón de zoom, ya sea que esté habilitado o deshabilitado de acuerdo con la comprobación previa del modo del usuario.

¡Gracias por la ayuda!

+0

¿Por qué el zoom debería estar restringido? Sus acciones se basarán en el tamaño de ventana del contenido, que * no * es información secreta, ya que las barras de desplazamiento también lo necesitan. El usuario podría evitar restricciones al dimensionar la ventana ellos mismos. El tamaño de la ventana es un atributo de terminal del lado del usuario, no algo que debería ser controlado por el extremo del servidor. – CTMacUser

Respuesta

9

Puede obtener una referencia a ese botón con standardWindowButton:NSWindowZoomButton, y luego haga lo que pueda con cualquier NSButton.

actualización (en Swift):

var button = view.window?.standardWindowButton(NSWindowButton.ZoomButton) 
button?.enabled = false 
+0

Consulte la respuesta de Sam Soffes a continuación para conocer la forma correcta de hacerlo. –

+1

¡Gracias! Si desea mantener su ventana de tamaño variable, pero no desea que su aplicación llene toda la pantalla al presionar un botón, este código desactiva el botón de zoom verde. – balazs630

6

Agarrando el botón y ajuste permitido no es lo ideal. La mejor manera (10.6+) es usar setStyleMask:. He aquí cómo hacerlo:

window.styleMask = NSTitledWindowMask | NSClosableWindowMask 

Puede agregar o quitar estilos a voluntad. Otra forma de hacerlo sin cambiar el estilo es establecer minSize y maxSize del mismo tamaño. Esto también desactivará el cambio de tamaño.

1

En Swift 3, aquí es la forma más fácil de eliminar la posibilidad de:

var style = window.styleMask 
style.remove(.resizable) 
window.styleMask = style 

que habitualmente hago en viewDidAppear para los controladores de vista de guiones gráficos que tiene un controlador de ventana creada por ellos automáticamente en lugar de uno que pueda meterse con.

Cuestiones relacionadas