Necesito comprender cómo NSView personaliza sus vistas. Configuré todo en IB y mis subvistas cambiaron el tamaño muy bien (cuando redimensioné mi ventana con un mouse). Sin embargo, si hago [myMainView setFrame:]
con mi nuevo rect marco, no pasa nada. Todas mis sub-vistas siguen siendo del tamaño original (a pesar de que la vista principal tiene las dimensiones correctas). Se llama al niño resizeWithOldSuperviewSize:
, pero aún no tiene el tamaño adecuado.Comportamiento de ajuste de tamaño de NSView
Tengo una pantalla llena de elementos de cacao en la pantalla (pantalla n. ° 1), etiqueta, imagen, video. Hay un diseño bien definido para estos elementos. He configurado el comportamiento de aumento de tamaño a través de Interface Builder que funciona muy bien. Cambiar el tamaño de la ventana principal cambia el tamaño de los elementos de una manera satisfactoria.
Ahora, el usuario hace clic en el botón "siguiente", después de lo cual se dibujará una segunda pantalla llena de elementos (pantalla n. ° 2). Mis diseños se basan en un tamaño de pantalla canónico (digamos, 800x600). Pero ahora la ventana es más grande (o más pequeña) porque se redimensionó en la pantalla n. ° 1. Por lo tanto, ahora los elementos solo ocupan un área pequeña en la ventana, en lugar de tener el tamaño adecuado para llenar el espacio disponible. Quiero escalar estos elementos.
¿Entiendo mal cómo funciona el autoajuste? ¿Cómo puedo activar manualmente la máquina debajo de NSView?
Hay dos cosas que puedo hacer:
- cambiar manualmente el tamaño de los elementos en función del tamaño de la pantalla actual en relación con su tamaño original. Esta opción no es mi favorita porque, al parecer, me veo obligado a reescribir el código que ya está funcionando en NSView (el comportamiento de conversión de tamaño
- Mi segunda opción es invocar la magia de aumento de tamaño de NSView mencionada anteriormente. La documentación implica que [NSView setFrame:] Por lo que he intentado, cambie el tamaño de mi vista de contenido al tamaño de pantalla original (800x600), renderice mis elementos y luego cambie su tamaño al tamaño de la ventana actual. Conceptualmente, ¿no es idéntico al cambio de tamaño manual de la ventana? no parece ser. Una vez más, esta opción es preferible, ya que minimiza la cantidad de código que te ha ser escrito y mantenido.
Pruebe [resizeSubviewsWithOldSize:] (http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html#//apple_ref/occ/instm/NSView/resizeSubviewsWithOldSize :) o [setAutoresizesSubviews:] (http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html#//apple_ref/occ/instm/NSView/setAutoresizesSubviews :). –
No estoy seguro de lo que quieres decir aquí. Se llama a resizeSubviewsWithOldSize de los padres, setAutoresizesSubviews se establece en yes. ¿Puedes proporcionar más orientación por favor? – EightyEight
El primero se debe a este último: si autoresizesSubviews está establecido en YES, entonces resizeSubviewsWithOldSize: debería llamarse automáticamente. Como lo tienes configurado y eso está sucediendo, también estoy perplejo. Lo siento. –