Cambio de tamaño de NSWindows y proporciones fijas en Mac OS X

Estaba buscando hacer una ventana que tenga una proporción fija cuando el usuario cambia el tamaño del elemento NSWindow en Mac OS X.

Originalmente intenté:

- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize
{
    NSSize windowSize = frameSize;
    windowSize.width = windowSize.height*1.6;

    return windowSize;
}

Que hace el trabajo básico, aparte de esto, solo funcionará si el usuario arrastra la ventana desde la parte inferior o la esquina, NO desde los lados.

Así que eché otro vistazo y encontré lo siguiente:

[_window setAspectRatio:NSMakeSize(1.6, 1)];

(Puse esto en applicationDidFinishLaunching :)

Inicialmente, parecía que iba a hacer el trabajo, sin embargo, cuando cambie el tamaño de la ventana, saltará inicialmente y luego funcionará bien.

Además, mis gráficos parecen borrosos cuando la ventana se amplía, aunque la calidad de ellos es mayor que el tamaño de la ventana.

Básicamente, esperaba que alguien tuviera algún consejo y truco para un nuevo desarrollador de Mac OS X sobre cómo cambiar el tamaño de la ventana. Nunca tuve que preocuparme por esto para iOS, y quiero resolver esto antes de rediseñar la interfaz de usuario de las aplicaciones para el tamaño de pantalla más grande.

¡Gracias!

preguntado el 30 de junio de 12 a las 14:06

Dices que salta; ¿Está configurando correctamente la relación de aspecto inicial en IB? -

¿Usted puede hacer eso? ¿Dónde lo encontraría porque no puedo verlo en las propiedades de NSWindow? -

Sí, está en el Inspector de tamaño (quinta pestaña en el panel de la derecha). -

¿Estoy siendo ciego pero no puedo ver una propiedad de 'relación de aspecto' aquí? cl.ly/1r243G0c0l2v1u3N2p2c (Ps he cambiado mi relación de aspecto a 0.75). -

Lo que está configurando en IB es el contenido rect. El marco de la ventana (efectivamente la barra de título) no está incluido. Esto correspondería a la relación de aspecto mantenida por -setContentAspectRatio:. Es decir, si configura el tamaño del contenido para que tenga una proporción particular en IB y desea que se mantenga en tiempo de ejecución, use -setContentAspectRatio:. Si, por el contrario, desea mantener la relación de aspecto del marco, puede usar -setAspectRatio: pero debe asegurarse de especificar un rect de contenido ligeramente diferente para que el marco comience con la relación deseada. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.