Tengo un NSImageView que carga una imagen del paquete de la aplicación.NSI de tamaño redimensionado Vista no redibujado
Es configuración como tal:
coverImage.image = [NSImage imageNamed:@"themeSignEnd.png"];
coverImage.imageScaling = NSImageScaleNone;
coverImage.imageAlignment = NSImageAlignLeft;
La imagen muestra muy bien.
El tamaño de la NSImageView se calcula en función de otros factores y luego ajusta utilizando este código:
coverImage.frame = CGRectMake((1280 - 869)/2, 0, 869 * percentage, 800);
Esto funciona perfectamente bien la primera vez que se lleva a cabo (cuando se inicia la aplicación).
El NSImageView toma el tamaño y la imagen contenida se corta en el borde apropiado.
Desafortunadamente, cuando trato de cambiar el tamaño del NSImageView mientras la aplicación se está ejecutando (usando el mismo código anterior), no se actualizará visiblemente.
NSLogging el coverImage.frame
muestra que el cuadro en sí se ha actualizado correctamente. Sin embargo, la vista no parece volver a dibujarse, ni al contraerse ni al hacer crecer el marco. Además, cuando salgo y reinicio la aplicación, el NSImageView dibuja el borde correcto.
¿Qué podría causar tal comportamiento?
¿Es posible que el NSImageView simplemente no se vuelva a dibujar? Si es así, ¿cómo puedo forzar un rediseño?
¿Hay alguna otra peculiaridad de NSImageView que omití que puede llevar a este comportamiento?
edición:
Resulta que este error sólo ocurre cuando la propiedad se establece en ImageFrameStyle
NSImageFrameNone
. Si el marco está configurado para cualquier otra cosa, se vuelve a dibujar bien. Desafortunadamente, necesitamos que la imagen se muestre sin un marco.
¿Hay alguna diferencia en la representación de NSImageViews con y sin marcos que podría explicar esto?
¿Está actualizando el marco de la vista desde el hilo principal? –
@Rob -> Sí, lo soy. – 0x90
Ojalá hubiera una solución para esto. Si descubrió algo nuevo, publíquelo. Cambiar el estilo de marco no tiene ningún efecto para mí. Curiosamente, redimensionar aún más dibujará mi imagen y la actualizará. Si cambio de tamaño más pequeño, deja de actualizarse. – spartygw