Animación de NSImage se pierde después de archivo con NSKeyedArchiver
-
19-09-2019 - |
Pregunta
siguiente situación:
Tengo una instancia de mi NSObject
objeto sublcassed. Una de sus propiedades es un NSImage
. Después instanciando el objeto convierto con NSKeyedArchiver
a los datos, enviarlo a través de la red, descomprimirlo con NSKeyedUnarchiver
y mostrar la imagen en un NSImageView
(setAnimates: Sí). Hasta aquí no hay problemas. La imagen se puede visualizar en la otra máquina. Ahora el problema:
Si envío un gif animado, no va a animar. No sé por qué ... ¿Alguna idea de por qué la animación se mantiene lejos? Gracias!
ACTUALIZACIÓN
Si abro la imagen animada que antes de archivar el NSImageView
anima. El problema es tal vez el archivo ...
Actualización 2
He probado todo el flujo de trabajo sin necesidad de enviar los datos a través de la red, simplemente archivar y desarchivándolos nuevo. Como sospechaba que un problema con NSKeyed (Un) Archiver.
La animación se pierde. ¿Pero qué hacer para evitar esto?
Solución
Me simplemente archivar los datos de imagen originales, en lugar de la instancia imagen.
Otros consejos
Por defecto, NSImage
no retiene los datos de la imagen fuente original. Lo que es probable que suceda es que NSImage
está archivando el mapa de bits de una trama estática única y desechar el contenido original.
Si llama [yourNSImageObject setDataRetained:YES]
entonces el NSImage
debe aferrarse a los datos originales (en este caso, el GIF animado). Yo te sugeriría que intenta hacer esto cuando se crea la imagen en primer lugar, y luego ver lo que sucede cuando se está archivada / no archivada.