2009-09-03 22 views
6

¿Hay alguna manera de obtener obtener el tamaño de una NSWindow (en píxeles) y mostrarlo? Entonces, cuando la persona cambie el tamaño de la ventana, el texto cambiará y mostrará el nuevo tamaño.obtener tamaño de nswindow

Respuesta

12

Si implementa el método

- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize

sobre un objeto se establece como el delegado de la ventana, que se llamará siempre que la ventana cambia de tamaño. Desde allí puede actualizar el campo de texto que usa para mostrar el tamaño.

+0

bien aquí es lo que tengo: - (NSSize) windowWillResize: (NSWindow *) sendertoSize: (NSSize) FrameSize { \t [longitud setStringValue: @ "thisworks"]; \t [width setStringValue: @ "test"]; \t return; } (las cadenas son pruebas para asegurarse de que funciona) Todo está conectado en IB correctamente, está todo guardado. Pero cuando ejecuto la aplicación solo muestra "etiqueta", no dice lo que le dije que hiciera. –

+0

¿El código anterior está en un delegado? ¿Puedes actualizar tu pregunta con el código que tienes para proporcionar más contexto? – fbrereto

+0

está en el delegado de la ventana –

5

¿Qué hay de:

CGSize window_size = my_window.frame.size; 
0

En lugar de tratar de manejar los cambios de tamaño, en su lugar debe asegurarse de que las máscaras de aumento automático de sus vistas estén configuradas correctamente. En Interface Builder, debe hacer esto en el inspector de Tamaño (⌘3) con las vistas seleccionadas.

Si tiene una jerarquía de vistas completa sin configurar sus máscaras de aumento automático, tiene un poco de tedio por delante, pero no es difícil (simplemente tedioso), y no llevará mucho tiempo. Esta es la razón por la que debe configurar las máscaras de aumento de tamaño de las vistas a medida que las crea.

Una vez que se configuran las máscaras de realineación, las vistas cambiarán el tamaño automáticamente; a menos que su interfaz sea muy complicada, o cualquier vista puede bajar a tamaño cero, no necesitará intervenir.

+0

¿cómo me permitirá mostrar el tamaño usando un NSTextField? –

+0

Oh, pensé que estabas pidiendo obtener el tamaño y cambiar el tamaño de tus puntos de vista con él. Lo siento. Apoyo la respuesta de Ken. –

2
NSSize myNSWindowSize = [ [ myNSWindow contentView ] frame ].size; 

... debería ser lo que estás buscando. La sugerencia de fbrereto es qué deberías usar si quieres el tamaño, incluida la barra de título de NSWindow.

+0

Alternativamente, obtenga el 'cuadro' de la ventana, luego envíe a la ventana un mensaje' contentRectForFrameRect: 'para convertirlo. –

Cuestiones relacionadas